http://hapi-server.org/servers/TestData2.0/hapi/capabilities
  is.RequestError(): Expect no request error for timeout of 1000 ms used when request is for metadata.
Got: Timing info [ms]: {"socket":"1.3","lookup":"4.3","connect":"5.5","response":"10.4","end":"10.7"}, {"wait":"1.3","dns":"3.1","tcp":"1.2","firstByte":"5.0","download":"0.2","total":"10.7"}
  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 = '*' and, if given, Access-Control-Allow-Methods to include 'GET'
Got: Access-Control-Allow-Origin = '*' and, Access-Control-Allow-Methods 'GET'
  is.HTTP200(): Expect HTTP status code to be 200
  is.JSONParsable(): Expect JSON.parse(response) to not throw error
  is.HAPIVersion(): Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1","3.0","3.1"]
Got: 2.0
  is.HAPIJSON(): Expect body to be valid HAPI 2.0 'capabilities' schema.
Got: JSON is valid with respect to JSON schema.
  Expect outputFormats to have 'csv'
Got: csv, binary, json

http://hapi-server.org/servers/TestData2.0/hapi/catalog
  is.RequestError(): Expect no request error for timeout of 1000 ms used when request is for metadata.
Got: Timing info [ms]: {"socket":"0.4","lookup":"1.0","connect":"2.1","response":"5.6","end":"5.8"}, {"wait":"0.4","dns":"0.5","tcp":"1.2","firstByte":"3.4","download":"0.2","total":"5.8"}
  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 = '*' and, if given, Access-Control-Allow-Methods to include 'GET'
Got: Access-Control-Allow-Origin = '*' and, Access-Control-Allow-Methods 'GET'
  is.HTTP200(): Expect HTTP status code to be 200
  is.JSONParsable(): Expect JSON.parse(response) to not throw error
  is.HAPIVersionSame(): Expect HAPI version to match that from last requests where found.
Got: Current: '2.0' and Last: '2.0'
  is.HAPIVersion(): Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1","3.0","3.1"]
Got: 2.0
  is.HAPIJSON(): Expect body to be valid HAPI 2.0 'catalog' schema.
Got: JSON is valid with respect to JSON schema.
  is.Unique(): Expect all 'id' values in objects in datasets array to be unique
is.TooLong(): Prefer titles in objects to be ≤ 40 characters
Got: catalog has 2 datasets with a title > 40 characters:

id: 'dataset2'; title: 'Dataset w/valid HAPI 2.0 - Same as dataset1 but at PT1H resolution'
id: 'dataset3'; title: 'Dataset w/valid HAPI 2.0 - Same as dataset1 but at P1D resolution'
  is.CIdentifier(): Prefer dataset id to match c identifier regex '[_a-zA-Z][_a-zA-Z0-9]{1,30}'.
Got: All dataset id(s) match.

http://hapi-server.org/servers/TestData2.0/hapi/info?id=dataset1
 👁 Visually check data and test performance
  is.RequestError(): Expect no request error for timeout of 1000 ms used when request is for metadata.
Got: Timing info [ms]: {"socket":"0.4","lookup":"1.2","connect":"2.3","response":"6.1","end":"6.3"}, {"wait":"0.4","dns":"0.7","tcp":"1.2","firstByte":"3.8","download":"0.2","total":"6.3"}
  is.HTTP200(): Expect HTTP status code to be 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
  is.HAPIVersionSame(): Expect HAPI version to match that from last requests where found.
Got: Current: '2.0' and Last: '2.0'
  is.HAPIVersion(): Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1","3.0","3.1"]
Got: 2.0
  is.HAPIJSON(): Expect body to be valid HAPI 2.0 'info' schema.
Got: JSON is valid with respect to JSON schema.
  is.Unique(): Expect all 'name' values in objects in parameters array to be 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: header.parameters[0].name
  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 = 1970-01-01T00Z; stopDate = 2016-12-31T00Z
  is.TimeIncreasing(): Expect info.sampleStartDate < info.sampleStopDate
Got: sampleStartDate = 1970-01-01T00Z; sampleStopDate = 1970-01-01T00:00:11Z
  is.LengthAppropriate(): Length may only be given for types string and isotime
Got: Type = double and length = undefined for parameter 'scalar'
  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 scalar.
  is.CadenceGiven(): Expect the nominal cadence to be given (see the HAPI spec for definition). A nominal cadence is useful for clients and obviates the need for it to be inferred programatically.
Got: PT1S

http://hapi-server.org/servers/TestData2.0/hapi/data?id=dataset1&time.min=1970-01-01&time.max=1970-01-01T00:00:10
  is.RequestError(): Expect no request error for timeout of 5000 ms used when time.min/max given to validator
Got: Timing info [ms]: {"socket":"0.5","lookup":"1.1","connect":"2.2","response":"86.9","end":"127.9"}, {"wait":"0.5","dns":"0.6","tcp":"1.1","firstByte":"84.7","download":"41.0","total":"127.9"}
  is.HTTP200(): Expect HTTP status code to be 200
  is.FileStructureOK(): Expect nonzero length for data part of response.
Got: 25181 bytes.
  is.CompressionAvailable(): Expect HTTP Accept-Encoding to match /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 = '*' and, if given, Access-Control-Allow-Methods to include 'GET'
Got: Access-Control-Allow-Origin = '*' and, Access-Control-Allow-Methods 'GET'
  is.FileStructureOK(): Expect first character of CSV response to be an integer.
Got: 1
  is.FileStructureOK(): Expect last character of CSV response be a newline.
  is.FileStructureOK(): Expect last two characters of CSV response to not be newlines.
Got: The characters '2\n'
  is.FileStructureOK(): Expect at least one newline in CSV response.
Got: 11 newlines
  is.FileLineOK(): Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.
Got: (185) - (185)

http://hapi-server.org/servers/TestData2.0/hapi/data?id=dataset1&parameters=scalar&time.min=1970-01-01&time.max=1970-01-01T00:00:10
   Direct link for following plot.. Please report any plotting issues at the Python hapiplot GitHub page.

  is.RequestError(): Expect no request error for timeout of 5000 ms used when time.min/max given to validator
Got: Timing info [ms]: {"socket":"0.4","lookup":"0.9","connect":"2.1","response":"141.1","end":"184.3"}, {"wait":"0.4","dns":"0.5","tcp":"1.2","firstByte":"139.0","download":"43.2","total":"184.3"}
  is.HTTP200(): Expect HTTP status code to be 200
  is.FileStructureOK(): Expect nonzero length for data part of response.
Got: 436 bytes.
  is.CompressionAvailable(): Expect HTTP Accept-Encoding to match /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 = '*' and, if given, Access-Control-Allow-Methods to include 'GET'
Got: Access-Control-Allow-Origin = '*' and, Access-Control-Allow-Methods 'GET'
  is.FileStructureOK(): Expect first character of CSV response to be an integer.
Got: 1
  is.FileStructureOK(): Expect last character of CSV response be a newline.
  is.FileStructureOK(): Expect last two characters of CSV response to not be newlines.
Got: The characters '6\n'
  is.FileStructureOK(): Expect at least one newline in CSV response.
Got: 11 newlines
  is.CorrectLength(): Expect (trimmed length of Time string parameter in CSV) - (parameters.Time.length) = 0.
Got: (24) - (24)
  is.HAPIVersionSame(): Expect HAPI version to match that from last requests where found.
Got: Current: '2.0' and Last: '2.0'
  is.HAPIVersion(): Expect HAPI version in JSON response to be one of ["1.1","2.0","2.1","3.0","3.1"]
Got: 2.0
  is.HAPITime(): Expect time column to contain valid HAPI 2.0 HAPITime strings
  is.TimeIncreasing(): Expect
  is.TimeInBounds(): Expect first time in CSV ≥ 1970-01-01 and last time in CSV < 1970-01-01T00:00:10 (only checks to ms)
Got: First time = 1970-01-01T00:00:00.000; LastTime = 1970-01-01T00:00:09.000
  is.FileLineOK(): Expect (# of columns in CSV) - (# computed from length and size metadata) = 0.
Got: (2) - (2)
  is.FileContentSame(): Expect content from one parameter request to match content from all parameter request.

End of validation tests. Summary: Pass: 63; Warns: 1; Fails: 0. Warnings and failures repeated below.


http://hapi-server.org/servers/TestData2.0/hapi/catalog
is.TooLong(): Prefer titles in objects to be ≤ 40 characters
Got: catalog has 2 datasets with a title > 40 characters:

id: 'dataset2'; title: 'Dataset w/valid HAPI 2.0 - Same as dataset1 but at PT1H resolution'
id: 'dataset3'; title: 'Dataset w/valid HAPI 2.0 - Same as dataset1 but at P1D resolution'

Use the following links for visual checks of data and stress testing server.

https://hapi-server.org/plot?server=http://hapi-server.org/servers/TestData2.0/hapi&id=dataset1&format=gallery
https://hapi-server.org/plot?server=http://hapi-server.org/servers/TestData2.0/hapi&id=dataset2&format=gallery
https://hapi-server.org/plot?server=http://hapi-server.org/servers/TestData2.0/hapi&id=dataset3&format=gallery