https://jfaden.net/HapiServerDemo/hapi
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.4","lookup":"1.7","connect":"46.0","response":"138.1","end":"401.9"}, {"wait":"1.4","dns":"0.3","tcp":"44.4","firstByte":"92.0","download":"263.8","total":"401.9"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^text\/html/; Got: text/html;charset=UTF-8

https://jfaden.net/HapiServerDemo/hapi/capabilities
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.2","lookup":"1.4","connect":"46.6","response":"155.5","end":"155.6"}, {"wait":"1.2","dns":"0.2","tcp":"45.3","firstByte":"108.8","download":"0.2","total":"155.6"}
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

  Cannot continue tests on URL due to last failure.

https://jfaden.net/HapiServerDemo/hapi/catalog
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.4","connect":"44.7","response":"138.0","end":"143.6"}, {"wait":"1.1","dns":"0.2","tcp":"43.4","firstByte":"93.3","download":"5.5","total":"143.6"}
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'id' values in objects in datasets array to be unique; Got: All unique.
  is.TooLong() Expect titles in objects to be <= 40 characters; Got: All objects in catalog are shorter than 40 characters
  is.CIdentifier() Expect dataset id to match c identifier regex '[_a-zA-Z][_a-zA-Z0-9]{1,30}'.; Got: All dataset id(s) match.

https://jfaden.net/HapiServerDemo/hapi/info?id=a_test_of_an_invalid_id_by_verifier-nodejs
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.3","connect":"45.0","response":"137.0","end":"137.2"}, {"wait":"1.1","dns":"0.2","tcp":"43.7","firstByte":"92.1","download":"0.1","total":"137.2"}
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.ErrorCorrect() Expect HTTP code in JSON to be 404; Got: 404
  is.StatusInformative() Want HTTP status message to contain the string 'HAPI error 1406: unknown dataset id' (default HAPI error message). (Explanation.); Got: 'Not Found'
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

  Cannot continue tests on URL due to last failure.

https://jfaden.net/HapiServerDemo/hapi/info?id=爱荷华城天气
  Visually check data and test performance
  is.RequestError() Probably URL is malformed.; Got: TypeError: Request path contains unescaped characters
  is.RequestError() Probably URL is malformed.; Got: TypeError: Request path contains unescaped characters

https://jfaden.net/HapiServerDemo/hapi/info?id=strange/\data/
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.2","response":"137.4","end":"137.5"}, {"wait":"1.0","dns":"0.2","tcp":"43.0","firstByte":"93.1","download":"0.1","total":"137.5"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2017-05-30T00:00:00.000Z; stopDate = 2018-06-30T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2018-06-15T00:00:00.000Z; sampleStopDate = 2018-06-16T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter météo.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter météo
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=strange/\data/&parameters=météo
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.0","response":"133.2","end":"133.3"}, {"wait":"1.0","dns":"0.2","tcp":"42.8","firstByte":"89.1","download":"0.2","total":"133.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 404

  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.3","connect":"45.5","response":"224.6","end":"229.9"}, {"wait":"1.1","dns":"0.2","tcp":"44.2","firstByte":"179.1","download":"5.2","total":"229.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-166T00:00:00.000Z&time.max=2018-167T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.4","connect":"46.6","response":"174.2","end":"179.6"}, {"wait":"1.1","dns":"0.3","tcp":"45.2","firstByte":"127.6","download":"5.4","total":"179.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.4","connect":"45.2","response":"161.5","end":"166.9"}, {"wait":"1.1","dns":"0.3","tcp":"43.8","firstByte":"116.3","download":"5.5","total":"166.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.001Z&time.max=2018-06-15T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"9.5","lookup":"9.7","connect":"55.9","response":"152.9","end":"153.2"}, {"wait":"9.5","dns":"0.2","tcp":"46.2","firstByte":"97.0","download":"0.3","total":"153.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&parameters=Time&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.1","connect":"46.4","response":"299.1","end":"312.1"}, {"wait":"1.0","dns":"0.1","tcp":"45.3","firstByte":"252.6","download":"13.0","total":"312.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 725 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 49 lines.
    is.TimeInBounds() Expect first time in CSV >= 2018-06-15T00:00:00.000 and last time in CSV < 2018-06-16T00:00:00.000 (only checks to ms); Got: First time = 2018-06-15T00:00:19.000; LastTime = 2018-06-15T23:59:21.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&parameters=météo&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"45.8","response":"260.6","end":"312.6"}, {"wait":"1.0","dns":"0.2","tcp":"44.6","firstByte":"214.8","download":"52.0","total":"312.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:


Message:
bad parameter: m�t�o

StackTrace:
java.lang.IllegalArgumentException: bad parameter: m�t�o
at org.autoplot.hapiserver.Util.subsetParams(Util.java:374)
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:284)
at org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)



  Cannot continue tests on URL due to last failure.

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.5","response":"138.9","end":"145.3"}, {"wait":"1.0","dns":"0.2","tcp":"43.3","firstByte":"94.5","download":"6.3","total":"145.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2021-04-07T00:00:00.000Z; stopDate = 2021-04-07T01:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2021-04-07T00:00:00.000Z; sampleStopDate = 2021-04-07T00:30:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Counts.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Counts
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter Counts: bins.length (= 2) != size[0] (= 5). Parameter Counts: wrong number of elements in centers. Got 5. Expected 7. Parameter Counts: wrong number of elements in centers. Got 6. Expected 7.
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Energy.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Energy
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter Energy: bins.length (= 2) != size[0] (= 5). Parameter Energy: wrong number of elements in centers. Got 5. Expected 7.

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2&parameters=Counts
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.1","response":"136.6","end":"141.3"}, {"wait":"0.9","dns":"0.2","tcp":"43.0","firstByte":"92.5","download":"4.7","total":"141.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.1","response":"240.1","end":"240.5"}, {"wait":"1.0","dns":"0.2","tcp":"42.9","firstByte":"196.1","download":"0.4","total":"240.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 12509 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 31 newlines
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (71) - (71)

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&time.min=2021-097T00:00:00.000Z&time.max=2021-097T00:30:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.3","response":"218.8","end":"219.2"}, {"wait":"0.9","dns":"0.1","tcp":"45.2","firstByte":"172.5","download":"0.4","total":"219.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 12509 bytes.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.2","response":"229.4","end":"235.0"}, {"wait":"0.9","dns":"0.1","tcp":"45.2","firstByte":"183.2","download":"5.6","total":"235.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 15218 bytes.
    is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
    is.FormatInHeader() Header in csv response should have 'format: csv' specified.; Got: Format of '' specified.
    is.HeaderSame() Expect header in info response to match header in data response when 'include=header' requested.; Got: Matching headers.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&time.min=2021-04-07T00:00:00.001Z&time.max=2021-04-07T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.1","connect":"44.1","response":"208.5","end":"208.8"}, {"wait":"1.0","dns":"0.1","tcp":"43.0","firstByte":"164.4","download":"0.3","total":"208.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&parameters=Time&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"43.7","response":"172.7","end":"177.7"}, {"wait":"0.9","dns":"0.1","tcp":"42.6","firstByte":"129.1","download":"5.0","total":"177.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 750 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 31 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2021-04-07T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-04-07T00:00:00.000 and last time in CSV < 2021-04-07T00:30:00.000 (only checks to ms); Got: First time = 2021-04-07T00:00:00.000; LastTime = 2021-04-07T00:29:00.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&parameters=Counts&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.6","response":"194.9","end":"195.2"}, {"wait":"0.9","dns":"0.1","tcp":"45.5","firstByte":"148.3","download":"0.3","total":"195.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 5449 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 31 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2021-04-07T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-04-07T00:00:00.000 and last time in CSV < 2021-04-07T00:30:00.000 (only checks to ms); Got: First time = 2021-04-07T00:00:00.000; LastTime = 2021-04-07T00:29:00.000
    is.Float() Expect Math.abs(parseFloat('0.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.0'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat('0.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.0'.trim()) == true in column 35 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [5,7]; Got: 35 commas and product of elements in size array [5,7] = 35
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (36) - (36)

  https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&parameters=Energy&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.1","response":"197.0","end":"197.3"}, {"wait":"0.9","dns":"0.2","tcp":"44.0","firstByte":"151.8","download":"0.3","total":"197.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 7810 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 31 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2021-04-07T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-04-07T00:00:00.000 and last time in CSV < 2021-04-07T00:30:00.000 (only checks to ms); Got: First time = 2021-04-07T00:00:00.000; LastTime = 2021-04-07T00:29:00.000
    is.Float() Expect Math.abs(parseFloat('1.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('1.0'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat('2682.7')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('2682.7'.trim()) == true in column 35 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [5,7]; Got: 35 commas and product of elements in size array [5,7] = 35
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (36) - (36)

https://jfaden.net/HapiServerDemo/hapi/info?id=poolTemperature
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.7","response":"136.3","end":"136.4"}, {"wait":"0.9","dns":"0.1","tcp":"42.6","firstByte":"92.6","download":"0.2","total":"136.4"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2019-01-01T00:00:00.000Z; stopDate = 2021-09-22T10:48:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2021-09-21T00:00:00.000Z; sampleStopDate = 2021-09-22T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=poolTemperature&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"46.3","response":"142.5","end":"142.6"}, {"wait":"1.0","dns":"0.2","tcp":"45.0","firstByte":"96.2","download":"0.1","total":"142.6"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"43.8","response":"189.7","end":"194.6"}, {"wait":"0.9","dns":"0.3","tcp":"42.6","firstByte":"145.8","download":"4.9","total":"194.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"46.7","response":"147.8","end":"153.4"}, {"wait":"0.9","dns":"0.3","tcp":"45.6","firstByte":"101.1","download":"5.7","total":"153.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.3","response":"149.7","end":"155.3"}, {"wait":"0.9","dns":"0.2","tcp":"45.3","firstByte":"103.4","download":"5.6","total":"155.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"47.1","response":"145.5","end":"145.8"}, {"wait":"0.9","dns":"0.2","tcp":"45.9","firstByte":"98.5","download":"0.2","total":"145.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.3","response":"138.0","end":"138.2"}, {"wait":"0.9","dns":"0.3","tcp":"43.2","firstByte":"93.7","download":"0.3","total":"138.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If empty response for single parameter, expect empty response for all parameters.; Got: Single parameter body: 0 bytes. All parameter body: 2145 bytes.
    is.FileOK() A data part of response with zero bytes was not expected. (Explanation.); Got: Zero bytes and no 'HAPI 1201' in HTTP header status message.

  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.0","response":"146.0","end":"146.2"}, {"wait":"0.9","dns":"0.2","tcp":"43.9","firstByte":"101.0","download":"0.2","total":"146.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If empty response for single parameter, expect empty response for all parameters.; Got: Single parameter body: 0 bytes. All parameter body: 2145 bytes.
    is.FileOK() A data part of response with zero bytes was not expected. (Explanation.); Got: Zero bytes and no 'HAPI 1201' in HTTP header status message.

  Cannot continue tests on URL due to last failure.

https://jfaden.net/HapiServerDemo/hapi/info?id=atticTemperature
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"2.2","lookup":"2.4","connect":"44.8","response":"137.3","end":"137.4"}, {"wait":"2.2","dns":"0.2","tcp":"42.5","firstByte":"92.5","download":"0.1","total":"137.4"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2019-01-01T00:00:00.000Z; stopDate = 2021-09-22T10:48:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2021-09-21T00:00:00.000Z; sampleStopDate = 2021-09-22T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=atticTemperature&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"45.4","response":"140.2","end":"140.3"}, {"wait":"0.9","dns":"0.2","tcp":"44.2","firstByte":"94.8","download":"0.1","total":"140.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.3","response":"162.8","end":"168.4"}, {"wait":"0.9","dns":"0.3","tcp":"43.0","firstByte":"118.5","download":"5.6","total":"168.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"46.7","response":"158.8","end":"164.0"}, {"wait":"0.9","dns":"0.2","tcp":"45.5","firstByte":"112.1","download":"5.3","total":"164.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.2","connect":"49.7","response":"155.4","end":"161.3"}, {"wait":"1.1","dns":"0.2","tcp":"48.4","firstByte":"105.7","download":"5.9","total":"161.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"43.4","response":"134.8","end":"135.0"}, {"wait":"0.9","dns":"0.2","tcp":"42.3","firstByte":"91.3","download":"0.3","total":"135.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"44.3","response":"212.6","end":"224.4"}, {"wait":"0.9","dns":"0.1","tcp":"43.2","firstByte":"168.3","download":"11.8","total":"224.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1070 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 32 lines.
    is.TimeInBounds() Expect first time in CSV >= 2021-09-21T00:00:00.000 and last time in CSV < 2021-09-22T00:00:00.000 (only checks to ms); Got: First time = 2021-09-21T00:00:01.000; LastTime = 2021-09-21T23:59:01.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.4","response":"220.1","end":"232.7"}, {"wait":"0.9","dns":"0.2","tcp":"45.3","firstByte":"173.7","download":"12.6","total":"232.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44640 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '1\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 973 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 84 lines.
    is.TimeInBounds() Expect first time in CSV >= 2021-09-21T00:00:00.000 and last time in CSV < 2021-09-22T00:00:00.000 (only checks to ms); Got: First time = 2021-09-21T00:00:01.000; LastTime = 2021-09-21T23:59:01.000
    is.Float() Expect Math.abs(parseFloat('-1e31')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('-1e31'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=freezerTemperature
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.1","connect":"44.2","response":"138.6","end":"138.7"}, {"wait":"1.0","dns":"0.2","tcp":"43.1","firstByte":"94.4","download":"0.1","total":"138.7"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2019-01-01T00:00:00.000Z; stopDate = 2021-09-22T10:48:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2021-09-21T00:00:00.000Z; sampleStopDate = 2021-09-22T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=freezerTemperature&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.6","response":"138.0","end":"138.2"}, {"wait":"0.9","dns":"0.2","tcp":"43.5","firstByte":"93.4","download":"0.1","total":"138.2"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.3","response":"147.8","end":"153.5"}, {"wait":"1.0","dns":"0.2","tcp":"43.1","firstByte":"103.6","download":"5.6","total":"153.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"46.7","response":"156.9","end":"162.7"}, {"wait":"1.0","dns":"0.2","tcp":"45.5","firstByte":"110.1","download":"5.8","total":"162.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.7","response":"162.5","end":"168.0"}, {"wait":"0.9","dns":"0.3","tcp":"43.5","firstByte":"117.9","download":"5.5","total":"168.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.8","lookup":"1.9","connect":"47.3","response":"145.1","end":"145.3"}, {"wait":"1.8","dns":"0.2","tcp":"45.4","firstByte":"97.8","download":"0.2","total":"145.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"45.9","response":"201.0","end":"212.8"}, {"wait":"0.8","dns":"0.3","tcp":"44.8","firstByte":"155.1","download":"11.8","total":"212.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1238 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 47 lines.
    is.TimeInBounds() Expect first time in CSV >= 2021-09-21T00:00:00.000 and last time in CSV < 2021-09-22T00:00:00.000 (only checks to ms); Got: First time = 2021-09-21T00:00:01.000; LastTime = 2021-09-21T23:59:01.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"44.9","response":"215.4","end":"227.3"}, {"wait":"0.8","dns":"0.2","tcp":"43.9","firstByte":"170.5","download":"11.9","total":"227.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44640 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '1\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1250 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 70 lines.
    is.TimeInBounds() Expect first time in CSV >= 2021-09-21T00:00:00.000 and last time in CSV < 2021-09-22T00:00:00.000 (only checks to ms); Got: First time = 2021-09-21T00:00:01.000; LastTime = 2021-09-21T23:59:01.000
    is.Float() Expect Math.abs(parseFloat('-1e31')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('-1e31'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=groundTemp
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.2","response":"134.6","end":"134.7"}, {"wait":"0.8","dns":"0.2","tcp":"42.2","firstByte":"91.4","download":"0.1","total":"134.7"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2019-01-01T00:00:00.000Z; stopDate = 2021-09-22T10:48:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2021-09-21T00:00:00.000Z; sampleStopDate = 2021-09-22T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=groundTemp&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.5","response":"137.0","end":"137.1"}, {"wait":"0.9","dns":"0.2","tcp":"43.4","firstByte":"92.4","download":"0.1","total":"137.1"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.4","response":"683.9","end":"689.4"}, {"wait":"0.9","dns":"0.3","tcp":"45.3","firstByte":"637.5","download":"5.6","total":"689.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.8","response":"534.6","end":"540.2"}, {"wait":"0.9","dns":"0.2","tcp":"44.6","firstByte":"488.8","download":"5.6","total":"540.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.0","response":"530.9","end":"536.8"}, {"wait":"0.9","dns":"0.2","tcp":"43.9","firstByte":"485.9","download":"5.9","total":"536.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.4","response":"3229.6","end":"5366.6"}, {"wait":"0.9","dns":"0.2","tcp":"43.3","firstByte":"3185.2","download":"2136.9","total":"5366.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 4283886 bytes.

  https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

  https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
    is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

  Cannot continue tests on URL due to last failure.

https://jfaden.net/HapiServerDemo/hapi/info?id=0B000800408DD710
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.4","connect":"85.5","response":"182.3","end":"182.4"}, {"wait":"1.1","dns":"0.3","tcp":"84.1","firstByte":"96.8","download":"0.2","total":"182.4"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-01-09T00:00:00.000Z; stopDate = 2019-08-13T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2019-08-12T00:00:00.000Z; sampleStopDate = 2019-08-13T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=0B000800408DD710&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"46.2","response":"139.1","end":"143.8"}, {"wait":"1.0","dns":"0.2","tcp":"44.9","firstByte":"93.0","download":"4.7","total":"143.8"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.3","connect":"44.1","response":"253.0","end":"258.4"}, {"wait":"0.9","dns":"0.3","tcp":"42.8","firstByte":"208.9","download":"5.4","total":"258.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.8","response":"148.1","end":"154.1"}, {"wait":"0.9","dns":"0.3","tcp":"43.6","firstByte":"103.3","download":"6.0","total":"154.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.8","response":"145.9","end":"151.7"}, {"wait":"0.9","dns":"0.2","tcp":"42.7","firstByte":"102.1","download":"5.8","total":"151.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.1","connect":"45.2","response":"137.7","end":"138.0"}, {"wait":"0.8","dns":"0.3","tcp":"44.1","firstByte":"92.5","download":"0.2","total":"138.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&parameters=Time&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.3","response":"247.1","end":"259.9"}, {"wait":"0.8","dns":"0.2","tcp":"42.3","firstByte":"203.8","download":"12.8","total":"259.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 591 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 71 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:02.000; LastTime = 2019-08-12T23:59:02.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.3","response":"266.2","end":"281.3"}, {"wait":"0.9","dns":"0.2","tcp":"45.1","firstByte":"219.9","download":"15.1","total":"281.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44409 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '1\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 990 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 73 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:02.000; LastTime = 2019-08-12T23:59:02.000
    is.Float() Expect Math.abs(parseFloat('81.95')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('81.95'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=8500080044259C10
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"47.6","response":"146.3","end":"146.5"}, {"wait":"1.0","dns":"0.2","tcp":"46.3","firstByte":"98.8","download":"0.1","total":"146.5"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-01-09T00:00:00.000Z; stopDate = 2019-08-13T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2019-08-12T00:00:00.000Z; sampleStopDate = 2019-08-13T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=8500080044259C10&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"93.4","response":"188.6","end":"188.9"}, {"wait":"0.9","dns":"0.3","tcp":"92.2","firstByte":"95.2","download":"0.3","total":"188.9"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.6","lookup":"1.9","connect":"47.6","response":"188.2","end":"194.2"}, {"wait":"1.6","dns":"0.3","tcp":"45.7","firstByte":"140.7","download":"6.0","total":"194.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.2","lookup":"1.4","connect":"44.4","response":"144.9","end":"150.9"}, {"wait":"1.2","dns":"0.2","tcp":"43.0","firstByte":"100.5","download":"6.0","total":"150.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.5","response":"146.9","end":"153.0"}, {"wait":"1.0","dns":"0.2","tcp":"43.2","firstByte":"102.5","download":"6.1","total":"153.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.0","response":"142.1","end":"142.5"}, {"wait":"0.9","dns":"0.3","tcp":"42.8","firstByte":"98.1","download":"0.4","total":"142.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&parameters=Time&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.1","connect":"44.3","response":"231.2","end":"243.5"}, {"wait":"1.0","dns":"0.1","tcp":"43.2","firstByte":"186.9","download":"12.3","total":"243.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 819 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 61 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:01.000; LastTime = 2019-08-12T23:59:01.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"51.8","response":"263.3","end":"279.7"}, {"wait":"0.9","dns":"0.3","tcp":"50.7","firstByte":"211.5","download":"16.4","total":"279.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44495 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '9\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 887 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 69 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:01.000; LastTime = 2019-08-12T23:59:01.000
    is.Float() Expect Math.abs(parseFloat('81.16')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('81.16'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=610008002FE00410
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.5","lookup":"1.7","connect":"44.9","response":"136.9","end":"137.2"}, {"wait":"1.5","dns":"0.2","tcp":"43.2","firstByte":"92.0","download":"0.3","total":"137.2"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-01-09T00:00:00.000Z; stopDate = 2019-08-13T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2019-08-12T00:00:00.000Z; sampleStopDate = 2019-08-13T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=610008002FE00410&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.5","connect":"44.4","response":"136.1","end":"136.3"}, {"wait":"1.1","dns":"0.4","tcp":"42.9","firstByte":"91.7","download":"0.2","total":"136.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.4","connect":"47.0","response":"165.9","end":"172.0"}, {"wait":"1.1","dns":"0.3","tcp":"45.6","firstByte":"118.9","download":"6.1","total":"172.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.3","connect":"44.0","response":"148.9","end":"154.7"}, {"wait":"1.1","dns":"0.2","tcp":"42.7","firstByte":"104.9","download":"5.8","total":"154.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.3","connect":"44.8","response":"146.2","end":"151.5"}, {"wait":"1.0","dns":"0.2","tcp":"43.6","firstByte":"101.4","download":"5.3","total":"151.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"47.3","response":"143.5","end":"143.9"}, {"wait":"1.0","dns":"0.2","tcp":"46.1","firstByte":"96.3","download":"0.3","total":"143.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&parameters=Time&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"47.5","response":"238.5","end":"251.7"}, {"wait":"0.9","dns":"0.1","tcp":"46.4","firstByte":"191.0","download":"13.2","total":"251.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 912 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 66 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:08.000; LastTime = 2019-08-12T23:59:08.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"42.9","response":"250.9","end":"268.8"}, {"wait":"1.0","dns":"0.2","tcp":"41.8","firstByte":"208.0","download":"17.9","total":"268.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44484 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1056 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 81 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:08.000; LastTime = 2019-08-12T23:59:08.000
    is.Float() Expect Math.abs(parseFloat('92.3')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('92.3'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=AC00080040250510
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"5.7","lookup":"7.3","connect":"49.8","response":"141.0","end":"141.1"}, {"wait":"5.7","dns":"1.6","tcp":"42.5","firstByte":"91.2","download":"0.1","total":"141.1"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-01-09T00:00:00.000Z; stopDate = 2019-08-13T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2019-08-12T00:00:00.000Z; sampleStopDate = 2019-08-13T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=AC00080040250510&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.7","response":"143.9","end":"144.1"}, {"wait":"0.9","dns":"0.2","tcp":"45.6","firstByte":"97.2","download":"0.1","total":"144.1"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.6","response":"166.6","end":"172.1"}, {"wait":"0.9","dns":"0.3","tcp":"43.4","firstByte":"122.1","download":"5.4","total":"172.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"61.8","response":"165.0","end":"170.3"}, {"wait":"0.9","dns":"0.2","tcp":"60.7","firstByte":"103.2","download":"5.3","total":"170.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.0","response":"145.1","end":"151.1"}, {"wait":"0.9","dns":"0.2","tcp":"42.9","firstByte":"101.1","download":"6.1","total":"151.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"44.1","response":"135.2","end":"135.5"}, {"wait":"0.8","dns":"0.2","tcp":"43.0","firstByte":"91.1","download":"0.3","total":"135.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&parameters=Time&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"45.0","response":"243.9","end":"256.9"}, {"wait":"0.9","dns":"0.2","tcp":"44.0","firstByte":"198.8","download":"13.0","total":"256.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1203 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 54 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:10.000; LastTime = 2019-08-12T23:59:10.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"46.7","response":"262.1","end":"278.6"}, {"wait":"0.8","dns":"0.2","tcp":"45.6","firstByte":"215.5","download":"16.5","total":"278.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44439 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '5\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1191 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 68 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-08-12T00:00:00.000 and last time in CSV < 2019-08-13T00:00:00.000 (only checks to ms); Got: First time = 2019-08-12T00:00:10.000; LastTime = 2019-08-12T23:59:10.000
    is.Float() Expect Math.abs(parseFloat('76.66')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('76.66'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=10.E02340000800
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"43.3","response":"134.3","end":"134.4"}, {"wait":"0.9","dns":"0.1","tcp":"42.3","firstByte":"91.0","download":"0.1","total":"134.4"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2017-05-30T00:00:00.000Z; stopDate = 2018-06-30T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2018-06-15T00:00:00.000Z; sampleStopDate = 2018-06-16T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 1440

https://jfaden.net/HapiServerDemo/hapi/info?id=10.E02340000800&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"47.4","response":"146.1","end":"146.3"}, {"wait":"1.0","dns":"0.2","tcp":"46.2","firstByte":"98.8","download":"0.1","total":"146.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.2","response":"168.8","end":"174.2"}, {"wait":"0.9","dns":"0.2","tcp":"43.1","firstByte":"124.6","download":"5.4","total":"174.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-166T00:00:00.000Z&time.max=2018-167T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"47.6","response":"156.0","end":"161.3"}, {"wait":"0.9","dns":"0.2","tcp":"46.5","firstByte":"108.4","download":"5.3","total":"161.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.2","response":"146.4","end":"152.0"}, {"wait":"0.9","dns":"0.2","tcp":"43.1","firstByte":"102.3","download":"5.6","total":"152.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.001Z&time.max=2018-06-15T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.1","connect":"45.3","response":"159.0","end":"159.3"}, {"wait":"0.8","dns":"0.3","tcp":"44.2","firstByte":"113.7","download":"0.3","total":"159.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&parameters=Time&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"44.1","response":"237.0","end":"250.0"}, {"wait":"0.9","dns":"0.1","tcp":"43.1","firstByte":"192.9","download":"13.0","total":"250.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 36000 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1082 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 86 lines.
    is.TimeInBounds() Expect first time in CSV >= 2018-06-15T00:00:00.000 and last time in CSV < 2018-06-16T00:00:00.000 (only checks to ms); Got: First time = 2018-06-15T00:00:19.000; LastTime = 2018-06-15T23:59:21.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&parameters=Temperature&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.4","response":"266.4","end":"315.1"}, {"wait":"0.8","dns":"0.2","tcp":"42.3","firstByte":"223.0","download":"48.7","total":"315.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 44740 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '3\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1441 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1181 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 51 lines.
    is.TimeInBounds() Expect first time in CSV >= 2018-06-15T00:00:00.000 and last time in CSV < 2018-06-16T00:00:00.000 (only checks to ms); Got: First time = 2018-06-15T00:00:19.000; LastTime = 2018-06-15T23:59:21.000
    is.Float() Expect Math.abs(parseFloat('69.24')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('69.24'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Conditions
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.6","response":"144.7","end":"150.3"}, {"wait":"0.9","dns":"0.2","tcp":"45.5","firstByte":"98.1","download":"5.6","total":"150.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-05-28T00:00:00.000Z; stopDate = 2021-09-22T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2021-09-20T00:00:00.000Z; sampleStopDate = 2021-09-21T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter WindSpeed.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter WindSpeed
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter DewPoint.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter DewPoint
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Humidity.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Humidity
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter WindChill.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter WindChill
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter HeatIndex.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter HeatIndex
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Altimeter.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Altimeter
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Pressure.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Pressure
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Precip.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Precip
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1H
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 24

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Conditions&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"46.5","response":"143.6","end":"143.9"}, {"wait":"0.8","dns":"0.2","tcp":"45.5","firstByte":"97.1","download":"0.2","total":"143.9"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.4","response":"247.1","end":"252.6"}, {"wait":"0.9","dns":"0.3","tcp":"43.3","firstByte":"202.7","download":"5.5","total":"252.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-263T00:00:00.000Z&time.max=2021-264T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.5","response":"248.3","end":"253.6"}, {"wait":"0.9","dns":"0.3","tcp":"43.4","firstByte":"203.8","download":"5.2","total":"253.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.3","response":"238.1","end":"243.7"}, {"wait":"0.9","dns":"0.3","tcp":"43.1","firstByte":"193.8","download":"5.6","total":"243.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.001Z&time.max=2021-09-20T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"2.9","connect":"48.0","response":"175.8","end":"176.0"}, {"wait":"0.9","dns":"2.0","tcp":"45.1","firstByte":"127.8","download":"0.2","total":"176.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Time&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"44.1","response":"225.8","end":"226.1"}, {"wait":"0.8","dns":"0.2","tcp":"43.1","firstByte":"181.7","download":"0.3","total":"226.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 600 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Temperature&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.8","response":"230.9","end":"231.1"}, {"wait":"0.8","dns":"0.1","tcp":"42.8","firstByte":"187.0","download":"0.3","total":"231.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 720 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('79.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('79.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=WindSpeed&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"46.2","response":"231.6","end":"231.9"}, {"wait":"0.9","dns":"0.2","tcp":"45.1","firstByte":"185.5","download":"0.3","total":"231.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 706 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('6.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('6.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=DewPoint&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"44.4","response":"233.5","end":"233.8"}, {"wait":"0.8","dns":"0.2","tcp":"43.4","firstByte":"189.1","download":"0.3","total":"233.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 744 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('61.00')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('61.00'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Humidity&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"45.1","response":"232.5","end":"232.8"}, {"wait":"0.9","dns":"0.1","tcp":"44.1","firstByte":"187.4","download":"0.3","total":"232.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 720 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('54.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('54.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=WindChill&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"43.3","response":"244.7","end":"245.0"}, {"wait":"0.9","dns":"0.1","tcp":"42.3","firstByte":"201.5","download":"0.3","total":"245.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 744 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '1\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('-1e31')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('-1e31'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=HeatIndex&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.8","response":"255.5","end":"255.7"}, {"wait":"0.9","dns":"0.2","tcp":"43.8","firstByte":"210.6","download":"0.2","total":"255.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 734 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('80.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('80.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Altimeter&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"48.0","response":"232.8","end":"233.1"}, {"wait":"0.8","dns":"0.2","tcp":"47.0","firstByte":"184.8","download":"0.3","total":"233.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 743 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '2\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('29.92')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('29.92'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Pressure&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"44.0","response":"225.2","end":"225.5"}, {"wait":"0.8","dns":"0.2","tcp":"42.9","firstByte":"181.2","download":"0.3","total":"225.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 768 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '9\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('1012.7')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('1012.7'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Precip&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"47.2","response":"254.3","end":"254.6"}, {"wait":"0.8","dns":"0.2","tcp":"46.1","firstByte":"207.2","download":"0.3","total":"254.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 697 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '1\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 25 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2021-09-20T00:00:00.000 and last time in CSV < 2021-09-21T00:00:00.000 (only checks to ms); Got: First time = 2021-09-20T00:52:00.000; LastTime = 2021-09-20T23:52:00.000
    is.Float() Expect Math.abs(parseFloat('0.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Forecast
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.2","response":"139.1","end":"139.2"}, {"wait":"0.8","dns":"0.2","tcp":"42.2","firstByte":"95.9","download":"0.1","total":"139.2"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-05-28T00:00:00.000Z; stopDate = 2021-09-22T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2019-07-01T00:00:00.000Z; sampleStopDate = 2019-07-04T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Temperature.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Temperature
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter DewPoint.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter DewPoint
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter PrecipProbability.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter PrecipProbability
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter WindSpeed.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter WindSpeed
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter WindDirection.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter WindDirection
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT1H
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 72

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Forecast&parameters=Temperature
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.8","response":"139.0","end":"139.1"}, {"wait":"0.9","dns":"0.2","tcp":"43.7","firstByte":"94.2","download":"0.1","total":"139.1"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.1","connect":"45.1","response":"1957.2","end":"1957.6"}, {"wait":"0.8","dns":"0.3","tcp":"44.0","firstByte":"1912.1","download":"0.3","total":"1957.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 3557 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 73 newlines
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (6) - (6)

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&time.min=2019-182T00:00:00.000Z&time.max=2019-185T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.6","response":"1689.0","end":"1692.7"}, {"wait":"0.9","dns":"0.2","tcp":"43.4","firstByte":"1644.4","download":"3.7","total":"1692.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 3557 bytes.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.2","response":"1703.0","end":"1703.3"}, {"wait":"0.8","dns":"0.2","tcp":"42.2","firstByte":"1659.8","download":"0.3","total":"1703.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 5441 bytes.
    is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
    is.FormatInHeader() Header in csv response should have 'format: csv' specified.; Got: Format of '' specified.
    is.HeaderSame() Expect header in info response to match header in data response when 'include=header' requested.; Got: Matching headers.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&time.min=2019-07-01T00:00:00.001Z&time.max=2019-07-01T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.7","response":"2400.2","end":"2410.2"}, {"wait":"0.9","dns":"0.2","tcp":"42.7","firstByte":"2356.4","download":"10.0","total":"2410.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:


Message:
Exception thrown by data read
Caused by:
variable is not a dataset: null (com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList@2ce17da3)

StackTrace:
java.lang.IllegalArgumentException: Exception thrown by data read
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:234)
at org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: variable is not a dataset: null (com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList@2ce17da3)
at org.autoplot.datasource.jython.JythonDataSource.getDataSet(JythonDataSource.java:447)
at org.autoplot.datasource.RecordIterator.getDataSet(RecordIterator.java:85)
at org.autoplot.datasource.RecordIterator.(RecordIterator.java:141)
at org.autoplot.hapiserver.DataServlet.checkAutoplotSource(DataServlet.java:510)
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:215)
... 27 more



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=Time&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=Temperature&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.2","response":"1732.4","end":"1732.7"}, {"wait":"0.9","dns":"0.3","tcp":"42.1","firstByte":"1689.2","download":"0.3","total":"1732.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 2160 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 73 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 68 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-07-01T00:00:00.000 and last time in CSV < 2019-07-04T00:00:00.000 (only checks to ms); Got: First time = 2019-07-01T00:00:00.000; LastTime = 2019-07-03T23:00:00.000
    is.Float() Expect Math.abs(parseFloat('90.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('90.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=DewPoint&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.3","response":"1708.5","end":"1708.8"}, {"wait":"0.9","dns":"0.2","tcp":"45.2","firstByte":"1662.2","download":"0.3","total":"1708.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 2160 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 73 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 53 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-07-01T00:00:00.000 and last time in CSV < 2019-07-04T00:00:00.000 (only checks to ms); Got: First time = 2019-07-01T00:00:00.000; LastTime = 2019-07-03T23:00:00.000
    is.Float() Expect Math.abs(parseFloat('73.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('73.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=PrecipProbability&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.8","response":"1722.0","end":"1722.3"}, {"wait":"0.9","dns":"0.2","tcp":"43.7","firstByte":"1677.2","download":"0.3","total":"1722.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 2109 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 73 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2019-07-01T00:00:00.000 and last time in CSV < 2019-07-04T00:00:00.000 (only checks to ms); Got: First time = 2019-07-01T00:00:00.000; LastTime = 2019-07-03T23:00:00.000
    is.Float() Expect Math.abs(parseFloat('5.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('5.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=WindSpeed&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"46.6","response":"1698.3","end":"1698.6"}, {"wait":"0.9","dns":"0.2","tcp":"45.6","firstByte":"1651.7","download":"0.3","total":"1698.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 2096 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 73 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 63 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-07-01T00:00:00.000 and last time in CSV < 2019-07-04T00:00:00.000 (only checks to ms); Got: First time = 2019-07-01T00:00:00.000; LastTime = 2019-07-03T23:00:00.000
    is.Float() Expect Math.abs(parseFloat('9.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('9.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

  https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=WindDirection&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.9","response":"1683.2","end":"1683.5"}, {"wait":"0.9","dns":"0.2","tcp":"42.7","firstByte":"1639.3","download":"0.3","total":"1683.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 2232 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 73 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 63 lines.
    is.TimeInBounds() Expect first time in CSV >= 2019-07-01T00:00:00.000 and last time in CSV < 2019-07-04T00:00:00.000 (only checks to ms); Got: First time = 2019-07-01T00:00:00.000; LastTime = 2019-07-03T23:00:00.000
    is.Float() Expect Math.abs(parseFloat('220.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('220.0'.trim()) == true in column 1 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be 1 because no size given.; Got: 1 commas
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (2) - (2)

https://jfaden.net/HapiServerDemo/hapi/info?id=Spectrum
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.0","connect":"46.1","response":"145.8","end":"198.2"}, {"wait":"1.0","dns":"0.1","tcp":"45.0","firstByte":"99.7","download":"52.5","total":"198.2"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-09-01T00:00:00.000Z; stopDate = 2017-02-14T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2016-01-01T00:00:00.000Z; sampleStopDate = 2016-01-02T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Spectra.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Spectra
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter Spectra has correct number of elements.

https://jfaden.net/HapiServerDemo/hapi/info?id=Spectrum&parameters=Spectra
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.4","response":"139.6","end":"155.3"}, {"wait":"0.9","dns":"0.2","tcp":"43.2","firstByte":"95.2","download":"15.7","total":"155.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"45.0","response":"3439.3","end":"3446.7"}, {"wait":"0.9","dns":"0.3","tcp":"43.8","firstByte":"3394.4","download":"7.3","total":"3446.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-001T00:00:00.000Z&time.max=2016-002T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"2.7","connect":"48.9","response":"740.0","end":"745.3"}, {"wait":"0.9","dns":"1.8","tcp":"46.2","firstByte":"691.1","download":"5.3","total":"745.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.0","response":"755.3","end":"760.8"}, {"wait":"0.9","dns":"0.3","tcp":"42.8","firstByte":"711.3","download":"5.4","total":"760.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.001Z&time.max=2016-01-01T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.3","connect":"45.6","response":"524.6","end":"524.8"}, {"wait":"1.0","dns":"0.3","tcp":"44.3","firstByte":"478.9","download":"0.3","total":"524.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&parameters=Time&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.3","connect":"46.0","response":"1025.1","end":"1190.6"}, {"wait":"0.9","dns":"0.3","tcp":"44.8","firstByte":"979.0","download":"165.5","total":"1190.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 353200 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 14129 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 935 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 75 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:00.000 and last time in CSV < 2016-01-02T00:00:00.000 (only checks to ms); Got: First time = 2016-01-01T00:00:04.116; LastTime = 2016-01-01T23:59:55.951
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&parameters=Spectra&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerWheel
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"43.1","response":"140.2","end":"140.3"}, {"wait":"0.9","dns":"0.2","tcp":"41.9","firstByte":"97.1","download":"0.1","total":"140.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2016-07-28T00:00:00.000Z; stopDate = 2019-03-07T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2016-07-28T20:00:00.000Z; sampleStopDate = 2016-07-29T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter PowerWheel
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter PowerWheel has correct number of elements.

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerWheel&parameters=PowerWheel
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"45.6","response":"141.4","end":"145.7"}, {"wait":"0.9","dns":"0.3","tcp":"44.4","firstByte":"95.8","download":"4.3","total":"145.7"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&time.min=2016-07-28T20:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"46.0","response":"1702.6","end":"1756.4"}, {"wait":"1.0","dns":"0.2","tcp":"44.8","firstByte":"1656.7","download":"53.8","total":"1756.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 11019 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 68 newlines
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (22) - (22)

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&time.min=2016-210T20:00:00.000Z&time.max=2016-211T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"43.1","response":"839.4","end":"849.1"}, {"wait":"1.0","dns":"0.2","tcp":"41.9","firstByte":"796.3","download":"9.7","total":"849.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 11019 bytes.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&time.min=2016-07-28T20:00:00.000Z&time.max=2016-07-29T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.0","response":"827.9","end":"840.3"}, {"wait":"0.9","dns":"0.1","tcp":"42.9","firstByte":"784.0","download":"12.3","total":"840.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 12877 bytes.
    is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
    is.FormatInHeader() Header in csv response should have 'format: csv' specified.; Got: Format of '' specified.
    is.HeaderSame() Expect header in info response to match header in data response when 'include=header' requested.; Got: Matching headers.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&time.min=2016-07-28T20:00:00.001Z&time.max=2016-07-28T20:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.4","response":"201.4","end":"201.7"}, {"wait":"0.9","dns":"0.2","tcp":"45.3","firstByte":"155.1","download":"0.3","total":"201.7"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&parameters=Time&time.min=2016-07-28T20:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.8","response":"784.2","end":"784.5"}, {"wait":"0.9","dns":"0.1","tcp":"44.7","firstByte":"738.4","download":"0.3","total":"784.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 1675 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 68 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-07-28T22:21:46.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2016-07-28T20:00:00.000 and last time in CSV < 2016-07-29T00:00:00.000 (only checks to ms); Got: First time = 2016-07-28T22:21:46.000; LastTime = 2016-07-28T23:59:01.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&parameters=PowerWheel&time.min=2016-07-28T20:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.8","response":"808.6","end":"818.6"}, {"wait":"0.9","dns":"0.2","tcp":"42.6","firstByte":"764.9","download":"9.9","total":"818.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 11019 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 68 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-07-28T22:21:46.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 65 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-07-28T20:00:00.000 and last time in CSV < 2016-07-29T00:00:00.000 (only checks to ms); Got: First time = 2016-07-28T22:21:46.000; LastTime = 2016-07-28T23:59:01.000
    is.Float() Expect Math.abs(parseFloat('106.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('106.0'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat('200.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('200.0'.trim()) == true in column 21 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [21]; Got: 21 commas and product of elements in size array [21] = 21
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (22) - (22)
    is.FileDataOK() Expect data from one parameter request to match data from all parameter request.; Got: Match

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.0","connect":"43.4","response":"139.4","end":"139.5"}, {"wait":"0.9","dns":"0.1","tcp":"42.4","firstByte":"96.0","download":"0.1","total":"139.5"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2014-01-09T00:00:00.000Z; stopDate = 2021-09-22T10:49:09.974Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2014-01-09T00:00:00.000Z; sampleStopDate = 2014-01-10T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter SpectrogramRank2
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter SpectrogramRank2: bins.length (= 2) != size[0] (= 7). Parameter SpectrogramRank2: wrong number of elements in centers. Got 7. Expected 3.
  is.CadenceValid() Expect cadence to be a valid ISO8601 duration; Got: PT10M
  is.CadenceOK() Expect (sampleStopDate-sampleStartDate)/cadence > 10; Got: (sampleStartDate-sampleStopDate)/cadence = 144

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2&parameters=SpectrogramRank2
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"45.6","response":"139.7","end":"143.6"}, {"wait":"0.9","dns":"0.3","tcp":"44.4","firstByte":"94.1","download":"3.9","total":"143.6"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"45.4","response":"279.6","end":"285.0"}, {"wait":"0.9","dns":"0.3","tcp":"44.2","firstByte":"234.2","download":"5.4","total":"285.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-009T00:00:00.000Z&time.max=2014-010T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"45.4","response":"156.5","end":"162.6"}, {"wait":"1.0","dns":"0.3","tcp":"44.2","firstByte":"111.0","download":"6.1","total":"162.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"47.5","response":"155.1","end":"160.4"}, {"wait":"0.9","dns":"0.2","tcp":"46.3","firstByte":"107.6","download":"5.3","total":"160.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.001Z&time.max=2014-01-09T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.6","response":"164.4","end":"217.2"}, {"wait":"0.9","dns":"0.2","tcp":"44.5","firstByte":"118.7","download":"52.9","total":"217.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:


Message:
Exception thrown by data read
Caused by:
out of bounds in slice of len0=0 dataset: 0

StackTrace:
java.lang.IllegalArgumentException: Exception thrown by data read
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:234)
at org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IndexOutOfBoundsException: out of bounds in slice of len0=0 dataset: 0
at org.das2.qds.DDataSet.slice(DDataSet.java:610)
at org.autoplot.datasource.RecordIterator.(RecordIterator.java:166)
at org.autoplot.hapiserver.DataServlet.checkAutoplotSource(DataServlet.java:510)
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:215)
... 27 more



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&parameters=Time&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.8","response":"160.5","end":"160.8"}, {"wait":"0.9","dns":"0.2","tcp":"43.7","firstByte":"115.8","download":"0.3","total":"160.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 3600 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 145 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 73 lines.
    is.TimeInBounds() Expect first time in CSV >= 2014-01-09T00:00:00.000 and last time in CSV < 2014-01-10T00:00:00.000 (only checks to ms); Got: First time = 2014-01-09T00:00:00.000; LastTime = 2014-01-09T23:50:00.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&parameters=SpectrogramRank2&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"42.7","response":"193.7","end":"218.6"}, {"wait":"0.9","dns":"0.2","tcp":"41.6","firstByte":"151.0","download":"24.9","total":"218.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 23813 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '3\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 145 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 29 lines.
    is.TimeInBounds() Expect first time in CSV >= 2014-01-09T00:00:00.000 and last time in CSV < 2014-01-10T00:00:00.000 (only checks to ms); Got: First time = 2014-01-09T00:00:00.000; LastTime = 2014-01-09T23:50:00.000
    is.Float() Expect Math.abs(parseFloat('0.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.0'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat('20.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('20.0'.trim()) == true in column 21 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [7,3]; Got: 21 commas and product of elements in size array [7,3] = 21
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (22) - (22)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 145 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerOnesDigitSegments
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.8","response":"145.2","end":"201.5"}, {"wait":"0.9","dns":"0.1","tcp":"45.8","firstByte":"98.3","download":"56.3","total":"201.5"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2016-07-28T00:00:00.000Z; stopDate = 2017-03-14T16:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2016-07-28T00:00:00.000Z; sampleStopDate = 2016-07-29T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter PowerOnesDigitSegments
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter PowerOnesDigitSegments has correct number of elements.

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerOnesDigitSegments&parameters=PowerOnesDigitSegments
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.8","response":"137.3","end":"188.1"}, {"wait":"0.9","dns":"0.2","tcp":"42.7","firstByte":"93.5","download":"50.8","total":"188.1"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&time.min=2016-07-28T00:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.6","response":"817.9","end":"823.2"}, {"wait":"0.9","dns":"0.2","tcp":"43.5","firstByte":"773.3","download":"5.4","total":"823.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&time.min=2016-210T00:00:00.000Z&time.max=2016-211T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"44.4","response":"767.3","end":"778.2"}, {"wait":"0.9","dns":"0.3","tcp":"43.2","firstByte":"722.9","download":"10.9","total":"778.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&time.min=2016-07-28T00:00:00.000Z&time.max=2016-07-29T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.7","lookup":"1.9","connect":"45.3","response":"794.0","end":"799.9"}, {"wait":"1.7","dns":"0.2","tcp":"43.4","firstByte":"748.7","download":"5.9","total":"799.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07/20160728.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&time.min=2016-07-28T00:00:00.001Z&time.max=2016-07-28T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.8","response":"148.9","end":"153.9"}, {"wait":"0.9","dns":"0.2","tcp":"42.7","firstByte":"105.0","download":"5.0","total":"153.9"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&parameters=Time&time.min=2016-07-28T00:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.8","response":"770.9","end":"771.2"}, {"wait":"0.9","dns":"0.2","tcp":"42.6","firstByte":"727.2","download":"0.3","total":"771.2"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 1675 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 68 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV
    is.TimeInBounds() Expect first time in CSV >= 2016-07-28T00:00:00.000 and last time in CSV < 2016-07-29T00:00:00.000 (only checks to ms); Got: First time = 2016-07-28T22:21:46.000; LastTime = 2016-07-28T23:59:01.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&parameters=PowerOnesDigitSegments&time.min=2016-07-28T00:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.0","response":"810.2","end":"825.5"}, {"wait":"0.9","dns":"0.2","tcp":"43.9","firstByte":"765.2","download":"15.3","total":"825.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 12203 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 68 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 49 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-07-28T00:00:00.000 and last time in CSV < 2016-07-29T00:00:00.000 (only checks to ms); Got: First time = 2016-07-28T22:21:46.000; LastTime = 2016-07-28T23:59:01.000
    is.Float() Expect Math.abs(parseFloat('107.00')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('107.00'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat('167.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('167.0'.trim()) == true in column 27 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [27]; Got: 27 commas and product of elements in size array [27] = 27
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (28) - (28)
    is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 68 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=specBins
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.3","response":"146.7","end":"146.8"}, {"wait":"0.9","dns":"0.2","tcp":"45.2","firstByte":"100.3","download":"0.1","total":"146.8"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2016-01-01T00:00:30.000Z; stopDate = 2016-01-01T23:59:30.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2016-01-01T00:00:30.000Z; sampleStopDate = 2016-01-01T23:59:30.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 20 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1.0E38' for parameter specBins.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter specBins
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter specBins has correct number of elements.

https://jfaden.net/HapiServerDemo/hapi/info?id=specBins&parameters=specBins
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"46.6","response":"175.1","end":"175.2"}, {"wait":"0.9","dns":"0.3","tcp":"45.4","firstByte":"128.5","download":"0.1","total":"175.2"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"43.7","response":"202.8","end":"553.0"}, {"wait":"0.9","dns":"0.2","tcp":"42.6","firstByte":"159.1","download":"350.2","total":"553.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 189964 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (7) - (7)

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&time.min=2016-001T00:00:30.000Z&time.max=2016-001T23:59:30.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"46.1","response":"163.2","end":"517.0"}, {"wait":"0.9","dns":"0.2","tcp":"44.9","firstByte":"117.1","download":"353.8","total":"517.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 189964 bytes.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.1","connect":"46.4","response":"163.4","end":"516.1"}, {"wait":"1.0","dns":"0.1","tcp":"45.4","firstByte":"117.0","download":"352.6","total":"516.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 191577 bytes.
    is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
    is.FormatInHeader() Header in csv response should have 'format: csv' specified.; Got: Format of '' specified.
    is.HeaderSame() Expect header in info response to match header in data response when 'include=header' requested.; Got: Matching headers.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&time.min=2016-01-01T00:00:30.001Z&time.max=2016-01-01T00:00:30.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.9","lookup":"2.1","connect":"45.7","response":"141.3","end":"141.6"}, {"wait":"1.9","dns":"0.2","tcp":"43.6","firstByte":"95.6","download":"0.3","total":"141.6"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&parameters=Time&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"44.5","response":"146.2","end":"158.3"}, {"wait":"1.0","dns":"0.2","tcp":"43.3","firstByte":"101.6","download":"12.1","total":"158.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 30219 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (20) - (20)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-01-01T00:00:30Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 72 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:30.000 and last time in CSV < 2016-01-01T23:59:30.000 (only checks to ms); Got: First time = 2016-01-01T00:00:30; LastTime = 2016-01-01T23:58:30
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&parameters=specBins&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.5","response":"197.5","end":"548.1"}, {"wait":"0.9","dns":"0.2","tcp":"43.3","firstByte":"153.0","download":"350.6","total":"548.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 189964 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '0\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (20) - (20)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-01-01T00:00:30Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 76 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:30.000 and last time in CSV < 2016-01-01T23:59:30.000 (only checks to ms); Got: First time = 2016-01-01T00:00:30; LastTime = 2016-01-01T23:58:30
    is.Float() Expect Math.abs(parseFloat('0.0000000000000')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('0.0000000000000'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat('3695.7608593063400')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test('3695.7608593063400'.trim()) == true in column 6 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [6]; Got: 6 commas and product of elements in size array [6] = 6
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (7) - (7)
    is.FileDataOK() Expect data from one parameter request to match data from all parameter request.; Got: Match

https://jfaden.net/HapiServerDemo/hapi/info?id=specBins.ref
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.6","response":"219.1","end":"219.3"}, {"wait":"0.9","dns":"0.2","tcp":"43.5","firstByte":"174.5","download":"0.1","total":"219.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2016-01-01T00:00:30.000Z; stopDate = 2016-01-01T23:59:30.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2016-01-01T00:00:30.000Z; sampleStopDate = 2016-01-01T23:59:30.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1.0E38' for parameter counts.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter counts
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter counts: bins.length = undefined but should equal 1.
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1.0E38' for parameter flux.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter flux
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter flux: bins.length = undefined but should equal 1.

https://jfaden.net/HapiServerDemo/hapi/info?id=specBins.ref&parameters=counts
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"45.5","response":"141.8","end":"141.9"}, {"wait":"0.9","dns":"0.3","tcp":"44.3","firstByte":"96.3","download":"0.1","total":"141.9"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.0","lookup":"1.2","connect":"45.4","response":"172.9","end":"421.5"}, {"wait":"1.0","dns":"0.2","tcp":"44.2","firstByte":"127.5","download":"248.6","total":"421.5"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 169786 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '5\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (13) - (13)

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&time.min=2016-001T00:00:30.000Z&time.max=2016-001T23:59:30.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.1","connect":"43.6","response":"158.4","end":"408.1"}, {"wait":"0.8","dns":"0.2","tcp":"42.6","firstByte":"114.8","download":"249.6","total":"408.1"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 169786 bytes.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.0","connect":"43.9","response":"155.7","end":"406.0"}, {"wait":"0.8","dns":"0.2","tcp":"42.9","firstByte":"111.8","download":"250.3","total":"406.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 171464 bytes.
    is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
    is.FormatInHeader() Header in csv response should have 'format: csv' specified.; Got: Format of '' specified.
    is.HeaderSame() Expect header in info response to match header in data response when 'include=header' requested.; Got: Matching headers.
    is.FileDataOK() Expect data response to be same as previous request given differing request URLs.; Got: Match

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&time.min=2016-01-01T00:00:30.001Z&time.max=2016-01-01T00:00:30.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"7.3","lookup":"7.4","connect":"51.3","response":"146.1","end":"146.4"}, {"wait":"7.3","dns":"0.1","tcp":"44.0","firstByte":"94.8","download":"0.2","total":"146.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&parameters=Time&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.3","response":"144.9","end":"156.4"}, {"wait":"0.9","dns":"0.2","tcp":"43.2","firstByte":"100.6","download":"11.5","total":"156.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 35975 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-01-01T00:00:30.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 58 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:30.000 and last time in CSV < 2016-01-01T23:59:30.000 (only checks to ms); Got: First time = 2016-01-01T00:00:30.000; LastTime = 2016-01-01T23:58:30.000
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&parameters=counts&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"2.5","lookup":"2.5","connect":"46.4","response":"155.6","end":"283.8"}, {"wait":"2.5","dns":"0.1","tcp":"43.8","firstByte":"109.3","download":"128.1","total":"283.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 100714 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '7\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-01-01T00:00:30.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 84 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:30.000 and last time in CSV < 2016-01-01T23:59:30.000 (only checks to ms); Got: First time = 2016-01-01T00:00:30.000; LastTime = 2016-01-01T23:58:30.000
    is.Float() Expect Math.abs(parseFloat(' 0.0')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test(' 0.0'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat(' 3695.8')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test(' 3695.8'.trim()) == true in column 6 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [6]; Got: 6 commas and product of elements in size array [6] = 6
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (7) - (7)

  https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&parameters=flux&time.min=2016-01-01T00:00:30.000Z&time.max=2016-01-01T23:59:30.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"1.9","lookup":"2.1","connect":"47.1","response":"158.8","end":"284.3"}, {"wait":"1.9","dns":"0.2","tcp":"45.0","firstByte":"111.8","download":"125.4","total":"284.3"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 105047 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters '5\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 1440 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-01-01T00:00:30.000Z' is not a valid HAPI Time string. (First character is not [0-9].)
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 98 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:30.000 and last time in CSV < 2016-01-01T23:59:30.000 (only checks to ms); Got: First time = 2016-01-01T00:00:30.000; LastTime = 2016-01-01T23:58:30.000
    is.Float() Expect Math.abs(parseFloat(' 1.6667')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test(' 1.6667'.trim()) == true in column 1 on first line.; Got: true
    Passes are being suppressed.
    is.Float() Expect Math.abs(parseFloat(' 4.1070')) < 1.7976931348623157e+308 && /^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]{1,3})?$/.test(' 4.1070'.trim()) == true in column 6 on first line.; Got: true
    is.SizeCorrect() Expect number of commas on first line to be product of elements in size array [6]; Got: 6 commas and product of elements in size array [6] = 6
    is.FileDataOK() Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.; Got: (7) - (7)

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrumTimeVaryingChannels
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.1","connect":"44.0","response":"132.1","end":"138.1"}, {"wait":"0.8","dns":"0.2","tcp":"42.9","firstByte":"88.1","download":"6.0","total":"138.1"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2012-10-25T00:00:00.000Z; stopDate = 2017-01-01T00:00:00.000Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2016-01-01T00:00:00.000Z; sampleStopDate = 2016-01-02T00:00:00.000Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 24 for parameter Time
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Spectra.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Spectra
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter Spectra: wrong number of elements in centers. Got 6. Expected 72.
  is.FillOK() Expect fill value for a double parameter to not have a two or more non-zero decimal places.; Got: fill = '-1e31' for parameter Energy.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter Energy

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrumTimeVaryingChannels&parameters=Spectra
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"0.8","lookup":"1.1","connect":"45.2","response":"140.5","end":"144.9"}, {"wait":"0.8","dns":"0.3","tcp":"44.1","firstByte":"95.4","download":"4.4","total":"144.9"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"46.8","response":"1319.6","end":"1325.0"}, {"wait":"0.9","dns":"0.3","tcp":"45.6","firstByte":"1272.8","download":"5.4","total":"1325.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&time.min=2016-001T00:00:00.000Z&time.max=2016-002T00:00:00.000Z
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"45.2","response":"583.9","end":"590.0"}, {"wait":"0.9","dns":"0.2","tcp":"44.1","firstByte":"538.7","download":"6.1","total":"590.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z&include=header
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.1","connect":"44.9","response":"577.8","end":"583.4"}, {"wait":"0.9","dns":"0.2","tcp":"43.9","firstByte":"532.8","download":"5.6","total":"583.4"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrumTimeVaryingChannels/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&time.min=2016-01-01T00:00:00.001Z&time.max=2016-01-01T00:00:00.002Z
    is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1
    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"0.9","lookup":"1.2","connect":"46.5","response":"536.8","end":"537.0"}, {"wait":"0.9","dns":"0.3","tcp":"45.2","firstByte":"490.3","download":"0.2","total":"537.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&parameters=Time&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 1000 ms used when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: No error. Timing info [ms]: {"socket":"4.6","lookup":"4.8","connect":"48.7","response":"682.4","end":"790.0"}, {"wait":"4.6","dns":"0.2","tcp":"43.9","firstByte":"633.7","download":"107.6","total":"790.0"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 103175 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 4128 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (24) - (24)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 1035 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 67 lines.
    is.TimeInBounds() Expect first time in CSV >= 2016-01-01T00:00:00.000 and last time in CSV < 2016-01-02T00:00:00.000 (only checks to ms); Got: First time = 2016-01-01T00:00:06.825; LastTime = 2016-01-01T23:59:27.265
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&parameters=Spectra&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

  https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&parameters=Energy&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
    is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

  Cannot continue tests on URL due to last failure.

https://jfaden.net/HapiServerDemo/hapi/info?id=WFR_E_B
  Visually check data and test performance
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.6","lookup":"2.0","connect":"45.2","response":"135.5","end":"154.5"}, {"wait":"1.6","dns":"0.3","tcp":"43.3","firstByte":"90.3","download":"18.9","total":"154.5"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  is.Unique() Expect all 'name' values in objects in parameters array to be unique; Got: All unique.
  is.FormatInHeader() Info response should not have 'format' specified.; Got: No format given.
  is.FirstParameterOK() First parameter should (not must) be named 'Time' b/c clients will likely label first parameter as 'Time' on plot to protect against first parameter names that are not sensible.; Got: Time
  is.FirstParameterOK() First parameter must have a fill of null or it should not be specified.; Got: null
  is.TimeIncreasing() Expect info.startDate < info.stopDate; Got: startDate = 2017-02-09T00:00:02.478Z; stopDate = 2017-02-09T23:59:56.968Z
  is.TimeIncreasing() Expect info.sampleStartDate < info.sampleStopDate; Got: sampleStartDate = 2017-02-09T00:00:02.478Z; sampleStopDate = 2017-02-09T23:59:56.968Z
  is.UnitsOK Expect isotime units to be 'UTC'.; Got: type = 'isotime' and units = 'UTC' for parameter Time.
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = isotime and length = 30 for parameter Time
  is.LengthAppropriate() Length may only be given for types string and isotime; Got: Type = double and length = undefined for parameter data1
  is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter data1: bins.length (= 2) != size[0] (= 65). Parameter data1: wrong number of elements in centers. Got 65. Expected 6.

https://jfaden.net/HapiServerDemo/hapi/info?id=WFR_E_B&parameters=data1
  is.RequestError() Expect no request error for timeout of 200 ms used when request is for metadata.; Got: No error. Timing info [ms]: {"socket":"1.2","lookup":"1.5","connect":"44.3","response":"138.8","end":"176.3"}, {"wait":"1.2","dns":"0.3","tcp":"42.9","firstByte":"94.5","download":"37.5","total":"176.3"}
  is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
  is.ContentType() Expect HTTP Content-Type to match /^application\/json/; Got: application/json;charset=UTF-8
  is.JSONparsable() Expect JSON.parse(response) to not throw error; Got: no error
  is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1
  is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]
  : Expect # parameters in JSON to be 2 when one non-time parameter is requested; Got: 2 parameters.
  : Expect info response for one parameter to match content in response for all parameters; Got: Match.

  https://jfaden.net/HapiServerDemo/hapi/data?id=WFR_E_B&time.min=2017-02-09T00:00:02.478Z&time.max=2017-02-09T23:59:56.968Z
    is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

  Cannot continue tests on URL due to last failure.

  https://jfaden.net/HapiServerDemo/hapi/data?id=WFR_E_B&parameters=Time&time.min=2017-02-09T00:00:02.478Z&time.max=2017-02-09T23:59:56.968Z
    Direct link for following plot.. Please report any plotting issues on the Python hapiclient GitHub page.

    is.RequestError() Expect no request error for timeout of 5000 ms used when a previous request for data failed or timed out.; Got: No error. Timing info [ms]: {"socket":"1.1","lookup":"1.4","connect":"46.5","response":"738.6","end":"1227.8"}, {"wait":"1.1","dns":"0.3","tcp":"45.1","firstByte":"692.1","download":"489.2","total":"1227.8"}
    is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 200
    is.FileOK() Expect nonzero-length data part of response.; Got: 446369 bytes.
    is.CompressionAvailable() Expect HTTP Accept-Encoding to match /gzip/. (Note, only compression tested for is gzip.); Got: gzip
    is.ContentType() Expect HTTP Content-Type to match /^text\/csv/; Got: text/csv;charset=UTF-8
    is.CORSAvailable() To enable AJAX clients, want CORS HTTP Headers: Access-Control-Allow-{Origin,Methods} = {*, GET}; Got: Access-Control-Allow-{Origin,Methods} = {*, GET}
    is.FileOK() Expect first character of CSV response to be an integer.; Got: 2
    is.FileOK() Expect last character of CSV response be a newline.; Got: A newline.
    is.FileOK() Expect last two characters of CSV response to not be newlines.; Got: The characters 'Z\n'
    is.FileOK() Expect at least one newline in CSV response.; Got: 14400 newlines
    is.CorrectLength() Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.; Got: (30) - (30)
    is.HAPITime() Expect time column to contain valid HAPI 2.1 HAPITime strings; Got: Valid HAPI Time strings in first 709 lines.
    is.TimeIncreasing() Expect Monotonically increasing time in CSV; Got: Monotonically increasing time in CSV in first 58 lines.
    is.TimeInBounds() Expect first time in CSV >= 2017-02-09T00:00:02.478 and last time in CSV < 2017-02-09T23:59:56.968 (only checks to ms); Got: First time = 2017-02-09T00:00:02.478320256; LastTime = 2017-02-09T23:59:50.968230720
    is.SizeCorrect() Expect number of commas on first line to be 0 because only Time requested.; Got: 0 commas

  https://jfaden.net/HapiServerDemo/hapi/data?id=WFR_E_B&parameters=data1&time.min=2017-02-09T00:00:02.478Z&time.max=2017-02-09T23:59:56.968Z
    is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

  Cannot continue tests on URL due to last failure.

End of validation tests.

Summary: Passes: 1589. Warnings: 28. Failures: 201.Warnings and failures repeated below.


https://jfaden.net/HapiServerDemo/hapi/info?id=a_test_of_an_invalid_id_by_verifier-nodejs
  Warn: is.StatusInformative() Want HTTP status message to contain the string 'HAPI error 1406: unknown dataset id' (default HAPI error message). (Explanation.); Got: 'Not Found'

https://jfaden.net/HapiServerDemo/hapi/info?id=爱荷华城天气
  Warn: is.RequestError() Probably URL is malformed.; Got: TypeError: Request path contains unescaped characters

https://jfaden.net/HapiServerDemo/hapi/info?id=爱荷华城天气
  Warn: is.RequestError() Probably URL is malformed.; Got: TypeError: Request path contains unescaped characters

https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.001Z&time.max=2018-06-15T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&time.min=2021-04-07T00:00:00.001Z&time.max=2021-04-07T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.001Z&time.max=2018-06-15T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.001Z&time.max=2021-09-20T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=Time&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.001Z&time.max=2016-01-01T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&parameters=Spectra&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&time.min=2016-07-28T20:00:00.001Z&time.max=2016-07-28T20:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&time.min=2016-07-28T00:00:00.001Z&time.max=2016-07-28T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=specBins&time.min=2016-01-01T00:00:30.001Z&time.max=2016-01-01T00:00:30.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=specBins.ref&time.min=2016-01-01T00:00:30.001Z&time.max=2016-01-01T00:00:30.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&time.min=2016-01-01T00:00:00.001Z&time.max=2016-01-01T00:00:00.002Z
  Warn: is.FileOK() If data part of response has zero length, want 'HAPI 1201' in HTTP header status message. (Explanation.); Got: Zero bytes and HTTP header status message of 'OK'

https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&parameters=Spectra&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 1000 ms when time.min/max not given to validator but sampleStart/Stop is given in /info response.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrumTimeVaryingChannels&parameters=Energy&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=WFR_E_B&time.min=2017-02-09T00:00:02.478Z&time.max=2017-02-09T23:59:56.968Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/data?id=WFR_E_B&parameters=data1&time.min=2017-02-09T00:00:02.478Z&time.max=2017-02-09T23:59:56.968Z
  Warn: is.RequestError() Expect time interval between bytes sent to be less than 5000 ms when a previous request for data failed or timed out.; Got: ESOCKETTIMEDOUT

https://jfaden.net/HapiServerDemo/hapi/capabilities
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/capabilities
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/catalog
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/catalog
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=a_test_of_an_invalid_id_by_verifier-nodejs
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=a_test_of_an_invalid_id_by_verifier-nodejs
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=strange/\data/
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=strange/\data/
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=strange/\data/&parameters=météo
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 404

https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-166T00:00:00.000Z&time.max=2018-167T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/strange/\data/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&time.min=2018-06-15T00:00:00.001Z&time.max=2018-06-15T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=strange/\data/&parameters=météo&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:


Message:
bad parameter: m�t�o

StackTrace:
java.lang.IllegalArgumentException: bad parameter: m�t�o
at org.autoplot.hapiserver.Util.subsetParams(Util.java:374)
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:284)
at org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)



https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2
  Fail is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter Counts: bins.length (= 2) != size[0] (= 5). Parameter Counts: wrong number of elements in centers. Got 5. Expected 7. Parameter Counts: wrong number of elements in centers. Got 6. Expected 7.

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2
  Fail is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter Energy: bins.length (= 2) != size[0] (= 5). Parameter Energy: wrong number of elements in centers. Got 5. Expected 7.

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2&parameters=Counts
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=rank3dep2&parameters=Counts
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&time.min=2021-04-07T00:00:00.001Z&time.max=2021-04-07T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&parameters=Time&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2021-04-07T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&parameters=Counts&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2021-04-07T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=rank3dep2&parameters=Energy&time.min=2021-04-07T00:00:00.000Z&time.max=2021-04-07T00:30:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2021-04-07T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/info?id=poolTemperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=poolTemperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=poolTemperature&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=poolTemperature&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/poolTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.FileOK() If empty response for single parameter, expect empty response for all parameters.; Got: Single parameter body: 0 bytes. All parameter body: 2145 bytes.

https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&parameters=Time&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.FileOK() A data part of response with zero bytes was not expected. (Explanation.); Got: Zero bytes and no 'HAPI 1201' in HTTP header status message.

https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.FileOK() If empty response for single parameter, expect empty response for all parameters.; Got: Single parameter body: 0 bytes. All parameter body: 2145 bytes.

https://jfaden.net/HapiServerDemo/hapi/data?id=poolTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.FileOK() A data part of response with zero bytes was not expected. (Explanation.); Got: Zero bytes and no 'HAPI 1201' in HTTP header status message.

https://jfaden.net/HapiServerDemo/hapi/info?id=atticTemperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=atticTemperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=atticTemperature&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=atticTemperature&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/atticTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=atticTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=freezerTemperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=freezerTemperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=freezerTemperature&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=freezerTemperature&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/freezerTemperature/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=freezerTemperature&parameters=Temperature&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=groundTemp
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=groundTemp
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=groundTemp&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=groundTemp&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-264T00:00:00.000Z&time.max=2021-265T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-09-21T00:00:00.000Z&time.max=2021-09-22T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/groundTemp/2021/09/20210921.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=groundTemp&time.min=2021-09-21T00:00:00.001Z&time.max=2021-09-21T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=0B000800408DD710
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=0B000800408DD710
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=0B000800408DD710&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=0B000800408DD710&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/0B000800408DD710/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=0B000800408DD710&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=8500080044259C10
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=8500080044259C10
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=8500080044259C10&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=8500080044259C10&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/8500080044259C10/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=8500080044259C10&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=610008002FE00410
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=610008002FE00410
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=610008002FE00410&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=610008002FE00410&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/610008002FE00410/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=610008002FE00410&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=AC00080040250510
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=AC00080040250510
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=AC00080040250510&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=AC00080040250510&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-224T00:00:00.000Z&time.max=2019-225T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/AC00080040250510/2019/08/20190812.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&time.min=2019-08-12T00:00:00.001Z&time.max=2019-08-12T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=AC00080040250510&parameters=Temperature&time.min=2019-08-12T00:00:00.000Z&time.max=2019-08-13T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=10.E02340000800
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=10.E02340000800
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=10.E02340000800&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=10.E02340000800&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-166T00:00:00.000Z&time.max=2018-167T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/10.E02340000800/2018/06/20180615.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&time.min=2018-06-15T00:00:00.001Z&time.max=2018-06-15T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=10.E02340000800&parameters=Temperature&time.min=2018-06-15T00:00:00.000Z&time.max=2018-06-16T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 1441 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Conditions
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Conditions
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Conditions&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Conditions&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-263T00:00:00.000Z&time.max=2021-264T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Iowa City Conditions/2021/09/20210920.csv.gz (No such file or directory)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&time.min=2021-09-20T00:00:00.001Z&time.max=2021-09-20T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Temperature&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=WindSpeed&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=DewPoint&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Humidity&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=WindChill&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=HeatIndex&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Altimeter&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Pressure&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Conditions&parameters=Precip&time.min=2021-09-20T00:00:00.000Z&time.max=2021-09-21T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 25 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Forecast
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Forecast
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Forecast&parameters=Temperature
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=Iowa City Forecast&parameters=Temperature
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&time.min=2019-07-01T00:00:00.001Z&time.max=2019-07-01T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&time.min=2019-07-01T00:00:00.001Z&time.max=2019-07-01T00:00:00.002Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:


Message:
Exception thrown by data read
Caused by:
variable is not a dataset: null (com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList@2ce17da3)

StackTrace:
java.lang.IllegalArgumentException: Exception thrown by data read
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:234)
at org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: variable is not a dataset: null (com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList@2ce17da3)
at org.autoplot.datasource.jython.JythonDataSource.getDataSet(JythonDataSource.java:447)
at org.autoplot.datasource.RecordIterator.getDataSet(RecordIterator.java:85)
at org.autoplot.datasource.RecordIterator.(RecordIterator.java:141)
at org.autoplot.hapiserver.DataServlet.checkAutoplotSource(DataServlet.java:510)
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:215)
... 27 more



https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=Temperature&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=DewPoint&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=PrecipProbability&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=WindSpeed&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=Iowa City Forecast&parameters=WindDirection&time.min=2019-07-01T00:00:00.000Z&time.max=2019-07-04T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2019-07-01T00:00:00.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/info?id=Spectrum
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=Spectrum
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=Spectrum&parameters=Spectra
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=Spectrum&parameters=Spectra
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-001T00:00:00.000Z&time.max=2016-002T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.000Z&time.max=2016-01-02T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/Spectrum/2016/01/20160101.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=Spectrum&time.min=2016-01-01T00:00:00.001Z&time.max=2016-01-01T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerWheel
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerWheel
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerWheel&parameters=PowerWheel
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerWheel&parameters=PowerWheel
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&time.min=2016-07-28T20:00:00.001Z&time.max=2016-07-28T20:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&parameters=Time&time.min=2016-07-28T20:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-07-28T22:21:46.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/data?id=PowerWheel&parameters=PowerWheel&time.min=2016-07-28T20:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
  Fail is.HAPITime() Expect time column to contain valid HAPI 3.0 HAPITime strings; Got: '2016-07-28T22:21:46.000Z' is not a valid HAPI Time string. (First character is not [0-9].)

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2
  Fail is.BinsOK Expect bin units, label, centers, and ranges to have correct number of elements.; Got: Parameter SpectrogramRank2: bins.length (= 2) != size[0] (= 7). Parameter SpectrogramRank2: wrong number of elements in centers. Got 7. Expected 3.

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2&parameters=SpectrogramRank2
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=SpectrogramRank2&parameters=SpectrogramRank2
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-009T00:00:00.000Z&time.max=2014-010T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z&include=header
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

type Exception report

message /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.io.FileNotFoundException: /mynet/spot8/home/jbf/hapi/cache/SpectrogramRank2/2014/01/20140109.csv.gz (Permission denied)
java.io.FileOutputStream.open0(Native Method)
java.io.FileOutputStream.open(FileOutputStream.java:270)
java.io.FileOutputStream.<init>(FileOutputStream.java:213)
java.io.FileOutputStream.<init>(FileOutputStream.java:162)
org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:347)
org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.


Apache Tomcat/8.0.27



https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.001Z&time.max=2014-01-09T00:00:00.002Z
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&time.min=2014-01-09T00:00:00.001Z&time.max=2014-01-09T00:00:00.002Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:


Message:
Exception thrown by data read
Caused by:
out of bounds in slice of len0=0 dataset: 0

StackTrace:
java.lang.IllegalArgumentException: Exception thrown by data read
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:234)
at org.autoplot.hapiserver.DataServlet.doGet(DataServlet.java:398)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.jspbook.GZIPFilter.doFilter(GZIPFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IndexOutOfBoundsException: out of bounds in slice of len0=0 dataset: 0
at org.das2.qds.DDataSet.slice(DDataSet.java:610)
at org.autoplot.datasource.RecordIterator.(RecordIterator.java:166)
at org.autoplot.hapiserver.DataServlet.checkAutoplotSource(DataServlet.java:510)
at org.autoplot.hapiserver.DataServlet.processRequest(DataServlet.java:215)
... 27 more



https://jfaden.net/HapiServerDemo/hapi/data?id=SpectrogramRank2&parameters=SpectrogramRank2&time.min=2014-01-09T00:00:00.000Z&time.max=2014-01-10T00:00:00.000Z
  Fail is.FileDataOK() Expect number of rows from one parameter request to match data from all parameter request.; Got: # rows in single parameter request = 145 # in all parameter request = 12

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerOnesDigitSegments
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerOnesDigitSegments
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerOnesDigitSegments&parameters=PowerOnesDigitSegments
  Fail is.HAPIVersion() Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1"]; Got: '3.0', which is not valid or not implemented by verifier. Will use 2.1

https://jfaden.net/HapiServerDemo/hapi/info?id=PowerOnesDigitSegments&parameters=PowerOnesDigitSegments
  Fail is.HAPIJSON() Expect HAPI version to be one of ["1.1","2.0","2.1"]; Got: Schema version 3.0 not one of ["1.1","2.0","2.1"]

https://jfaden.net/HapiServerDemo/hapi/data?id=PowerOnesDigitSegments&time.min=2016-07-28T00:00:00.000Z&time.max=2016-07-29T00:00:00.000Z
  Fail is.HTTP200() Expect HTTP status code to be 200; Got: HTTP status 500 and non JSON.parse()-able body:
Apache Tomcat/8.0.27 - Error report

HTTP Status 500 - /mynet/spot8/home/jbf/hapi/cache/PowerOnesDigitSegments/2016/07