def testDeleteAnonymous(self): # test delete works with anonymous dataset domain = 'tall_dset22_deleted.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) g2_uuid = helper.getUUID(domain, root_uuid, 'g2') self.assertTrue(helper.validateId(g2_uuid)) d22_uuid = helper.getUUID(domain, g2_uuid, 'dset2.2') self.assertTrue(helper.validateId(d22_uuid)) # delete g2, that will make dataset anonymous req = self.endpoint + "/groups/" + g2_uuid headers = {'host': domain} rsp = requests.delete(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) # verify that a GET on the dataset succeeds still req = helper.getEndpoint() + "/datasets/" + d22_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) # delete dataset... req = self.endpoint + "/datasets/" + d22_uuid headers = {'host': domain} rsp = requests.delete(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) # verify that a GET on the dataset fails req = helper.getEndpoint() + "/datasets/" + d22_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 410)
def testPutDimensionScale(self): domain = 'dim_scale_updated.' + config.get('domain') root_uuid = helper.getRootUUID(domain) headers = {'host': domain} dset_uuid = helper.getUUID(domain, root_uuid, 'temperatures') scale_x_uuid = helper.getUUID(domain, root_uuid, 'scale_x') scale_y_uuid = helper.getUUID(domain, root_uuid, 'scale_y') scale_z_uuid = helper.getUUID(domain, root_uuid, 'scale_z') # attach a dimension_list attribute to temperatures dataset reftype = {'class': 'H5T_REFERENCE', 'base': 'H5T_STD_REF_OBJ' } attr_name = "DIMENSION_LIST" vlen_type = {'class': 'H5T_VLEN', 'base': reftype } value = [] for item_uuid in (scale_x_uuid, scale_y_uuid, scale_z_uuid): obj_ref = 'datasets/' + item_uuid vlen_item = (obj_ref,) value.append(vlen_item) payload = {'type': vlen_type, 'shape': 3, 'value': value} req = self.endpoint + "/datasets/" + dset_uuid + "/attributes/" + attr_name rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 201) # create attribute
def testGetDimensionScale(self): domain = 'dim_scale.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'temperatures') scale_x_uuid = helper.getUUID(domain, root_uuid, 'scale_x') scale_y_uuid = helper.getUUID(domain, root_uuid, 'scale_y') scale_z_uuid = helper.getUUID(domain, root_uuid, 'scale_z') # now try reading the dimension list attribute req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/attributes/DIMENSION_LIST" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertTrue('dims' in shape) dims = shape['dims'] self.assertEqual(len(dims), 1) self.assertEqual(dims[0], 3) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_VLEN') baseType = typeItem['base'] self.assertEqual(baseType['class'], 'H5T_REFERENCE') self.assertEqual(baseType['base'], 'H5T_STD_REF_OBJ') data = rspJson['value'] self.assertEqual(len(data), 3) self.assertEqual(data[0], ['datasets/' + scale_x_uuid]) self.assertEqual(data[1], ['datasets/' + scale_y_uuid]) self.assertEqual(data[2], ['datasets/' + scale_z_uuid]) # read the x dimenscale and verify it refernces the temperature dataset req = helper.getEndpoint() + "/datasets/" + scale_x_uuid + "/attributes/REFERENCE_LIST" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_COMPOUND') fields = typeItem['fields'] self.assertEqual(len(fields), 2) refType = fields[0]["type"] self.assertEqual(refType["class"], 'H5T_REFERENCE') intType = fields[1]["type"] self.assertEqual(intType["class"], 'H5T_INTEGER') shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertTrue('dims' in shape) dims = shape['dims'] self.assertEqual(len(dims), 1) self.assertEqual(dims[0], 1) data = rspJson['value'] elem = data[0] self.assertEqual(len(elem), 2) # two fields of a compound type self.assertEqual(elem[0], 'datasets/' + dset_uuid) # reference primary dataset self.assertEqual(elem[1], 0) # first dimension
def testGet(self): for domain_name in ('tall', 'tall_ro'): domain = domain_name + '.' + config.get('domain') rootUUID = helper.getRootUUID(domain) g1UUID = helper.getUUID(domain, rootUUID, 'g1') g11UUID = helper.getUUID(domain, g1UUID, 'g1.1') # rank 1 dataset dset112UUID = helper.getUUID(domain, g11UUID, 'dset1.1.2') req = helper.getEndpoint() + "/datasets/" + dset112UUID headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertEqual(rspJson['id'], dset112UUID) typeItem = rspJson['type'] self.assertEqual(typeItem['base'], 'H5T_STD_I32BE') shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 20) req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.assertEqual(len(data), 20) for i in range(20): self.assertEqual(data[i], i) # rank 2 dataset dset111UUID = helper.getUUID(domain, g11UUID, 'dset1.1.1') req = helper.getEndpoint() + "/datasets/" + dset111UUID headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertEqual(rspJson['id'], dset111UUID) typeItem = rspJson['type'] self.assertEqual(typeItem['base'], 'H5T_STD_I32BE') shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 2) self.assertEqual(shape['dims'][0], 10) self.assertEqual(shape['dims'][1], 10) req = helper.getEndpoint() + "/datasets/" + dset111UUID + "/value" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.assertEqual(len(data), 10) for i in range(10): arr = data[i] self.assertEqual(len(arr), 10) for j in range(10): self.assertEqual(arr[j], i*j)
def testGetResizable(self): domain = 'resizable.' + config.get('domain') root_uuid = helper.getRootUUID(domain) resizable_1d_uuid = helper.getUUID(domain, root_uuid, 'resizable_1d') req = helper.getEndpoint() + "/datasets/" + resizable_1d_uuid + "/shape" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.assertEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('shape' in rspJson) shape = rspJson['shape'] self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 10) self.assertEqual(shape['maxdims'][0], 20) resizable_2d_uuid = helper.getUUID(domain, root_uuid, 'resizable_2d') req = helper.getEndpoint() + "/datasets/" + resizable_2d_uuid + "/shape" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.assertEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('shape' in rspJson) shape = rspJson['shape'] self.assertEqual(len(shape['dims']), 2) self.assertEqual(shape['dims'][1], 10) self.assertTrue('maxdims' in shape) # is re-sizeable! self.assertEqual(shape['maxdims'][1], 20) unlimited_1d_uuid = helper.getUUID(domain, root_uuid, 'unlimited_1d') req = helper.getEndpoint() + "/datasets/" + unlimited_1d_uuid + "/shape" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.assertEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('shape' in rspJson) shape = rspJson['shape'] self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 10) self.assertTrue('maxdims' in shape) # is re-sizeable self.assertEqual(shape['maxdims'][0], 0) unlimited_2d_uuid = helper.getUUID(domain, root_uuid, 'unlimited_2d') req = helper.getEndpoint() + "/datasets/" + unlimited_2d_uuid + "/shape" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.assertEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('shape' in rspJson) shape = rspJson['shape'] self.assertEqual(len(shape['dims']), 2) self.assertEqual(shape['dims'][1], 10) self.assertTrue('maxdims' in shape) # is re-sizeable self.assertEqual(shape['maxdims'][1], 0)
def testGet(self): domain = 'tall.' + config.get('domain') root_uuid = helper.getRootUUID(domain) g2_uuid = helper.getUUID(domain, root_uuid, 'g2') dset21_uuid = helper.getUUID(domain, g2_uuid, 'dset2.1') req = helper.getEndpoint() + "/datasets/" + dset21_uuid + "/shape" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertEqual(rspJson['class'], 'H5S_SIMPLE') self.assertEqual(len(rspJson['dims']), 1) self.assertEqual(rspJson['dims'][0], 10) self.assertEqual(rspJson['maxdims'][0], 10)
def testGet(self): domain = 'tall.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) g2_uuid = helper.getUUID(domain, root_uuid, 'g2') dset21_uuid = helper.getUUID(domain, g2_uuid, 'dset2.1') req = helper.getEndpoint() + "/datasets/" + dset21_uuid + '/type' headers = {'host': domain} rsp = requests.get(req, headers=headers) self.assertEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) typeItem = rspJson['type'] self.assertEqual(typeItem['base'], 'H5T_IEEE_F32BE') self.assertEqual(typeItem['class'], 'H5T_FLOAT')
def testQueryBatch(self): domain = 'compound.' + config.get('domain') headers = {'host': domain} root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'dset') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" start = 0 stop = 72 count = 0 count = req_count=0 limit = 10 req += "?query=date == 23" # values where date field = 23 req += "&Limit=" + str(limit) # return no more than 10 results at a time for i in range(50): sreq = req+"&select=[" + str(start) + ":" + str(stop) + "]" rsp = requests.get(sreq, headers=headers) self.failUnlessEqual(rsp.status_code, 200) req_count += 1 rspJson = json.loads(rsp.text) self.assertTrue('hrefs' in rspJson) self.assertTrue('index' in rspJson) index = rspJson['index'] self.assertTrue(len(index) <= limit) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), len(index)) count += len(index) if len(index) < limit: break # no more results start = index[-1] + 1 # start at next index self.assertEqual(count, 24) self.assertEqual(req_count, 3)
def testQueries(self): # use '%26' rather than '&' since otherwise it will be # interpreted as a http query param seperator queries = { "date == 23": 24, "wind == 'W 5'": 3, "temp > 61": 53, "(date >=22) %26 (date <= 24)": 62, "(date == 21) %26 (temp > 70)": 4, "(wind == 'E 7') | (wind == 'S 7')": 7 } #queries = { "(date == 21) %26 (temp >= 72)": 4 } domain = 'compound.' + config.get('domain') headers = {'host': domain} root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'dset') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" for key in queries.keys(): query = req + "?query=" + key rsp = requests.get(query, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('hrefs' in rspJson) self.assertTrue('index' in rspJson) index = rspJson['index'] self.assertTrue(len(index), queries[key]) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), queries[key])
def testGetCompoundCommitted(self): domain = 'compound_committed.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'dset') req = helper.getEndpoint() + "/datasets/" + dset_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 72) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_COMPOUND') self.assertTrue('fields' in typeItem) fields = typeItem['fields'] self.assertEqual(len(fields), 3) timeField = fields[1] self.assertEqual(timeField['name'], 'time') self.assertTrue('type' in timeField) timeFieldType = timeField['type'] self.assertEqual(timeFieldType['class'], 'H5T_STRING') self.assertEqual(timeFieldType['cset'], 'H5T_CSET_ASCII') self.assertEqual(timeFieldType['order'], 'H5T_ORDER_NONE') self.assertEqual(timeFieldType['strsize'], 6) self.assertEqual(timeFieldType['strpad'], 'H5T_STR_NULLPAD') tempField = fields[2] self.assertEqual(tempField['name'], 'temp') tempFieldType = tempField['type'] self.assertEqual(tempFieldType['class'], 'H5T_INTEGER') self.assertEqual(tempFieldType['base'], 'H5T_STD_I32LE')
def testGetArray(self): domain = 'array_attr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 4) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_ARRAY') self.assertTrue('dims' in typeItem) typeShape = typeItem['dims'] self.assertEqual(len(typeShape), 2) self.assertEqual(typeShape[0], 3) self.assertEqual(typeShape[1], 5) typeBase = typeItem['base'] self.assertEqual(typeBase['class'], 'H5T_INTEGER') self.assertEqual(typeBase['base'], 'H5T_STD_I64LE') self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 4) elem = value[0] # elem should be a 3x5 array self.assertEqual(len(elem), 3) self.assertEqual(elem[2], [0, -2, -4, -6, -8])
def testGetVlen(self): domain = 'vlen_attr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 2) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_VLEN') baseType = typeItem['base'] self.assertEqual(baseType['class'], 'H5T_INTEGER') self.assertEqual(baseType['base'], 'H5T_STD_I32LE') #verify data returned value = rspJson['value'] self.assertEqual(len(value), 2) self.assertEqual(len(value[1]), 12) self.assertEqual(value[1][11], 144)
def testGetCompoundArray(self): for domain_name in ('compound_array_attr', ): domain = domain_name + '.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertEqual(rspJson['name'], 'A1') shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SCALAR') typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_COMPOUND') self.assertEqual(len(typeItem['fields']), 2) fields = typeItem['fields'] field0 = fields[0] self.assertEqual(field0['name'], 'temp') field0Type = field0['type'] self.assertEqual(field0Type['class'], 'H5T_FLOAT') self.assertEqual(field0Type['base'], 'H5T_IEEE_F64LE') field1 = fields[1] self.assertEqual(field1['name'], '2x2') field1Type = field1['type'] self.assertEqual(field1Type['class'], 'H5T_ARRAY') self.assertEqual(field1Type['dims'], [2, 2]) baseType = field1Type['base'] self.assertEqual(baseType['class'], 'H5T_FLOAT') self.assertEqual(baseType['base'], 'H5T_IEEE_F32LE')
def testGetArray(self): domain = 'array_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 4) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_ARRAY') self.assertTrue('dims' in typeItem) typeShape = typeItem['dims'] self.assertEqual(len(typeShape), 2) self.assertEqual(typeShape[0], 3) self.assertEqual(typeShape[1], 5) typeItemBase = typeItem['base'] self.assertEqual(typeItemBase['class'], 'H5T_INTEGER') self.assertEqual(typeItemBase['base'], 'H5T_STD_I64LE')
def testGetArray(self): domain = 'array_attr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 4) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_ARRAY') self.assertTrue('dims' in typeItem) typeShape = typeItem['dims'] self.assertEqual(len(typeShape), 2) self.assertEqual(typeShape[0], 3) self.assertEqual(typeShape[1], 5) typeBase = typeItem['base'] self.assertEqual(typeBase['class'], 'H5T_INTEGER') self.assertEqual(typeBase['base'], 'H5T_STD_I64LE') # bug! - unable to read value from attribute with array type # code is not returning 'value' key in this case # h5py issue: https://github.com/h5py/h5py/issues/498 if 'value' in rspJson: print 'remove above if check once h5py 2.4 is released' self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 4) elem = value[0] # elem should be a 3x5 array self.assertEqual(elem[2], [0, -2, -4, -6, -8])
def testGetFixedString(self): domain = 'fixed_string_attr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 4) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_STRING') self.assertEqual(typeItem['cset'], 'H5T_CSET_ASCII') self.assertEqual(typeItem['order'], 'H5T_ORDER_NONE') self.assertEqual(typeItem['strsize'], 7) self.assertEqual(typeItem['strpad'], 'H5T_STR_NULLPAD') self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 4) self.assertEqual(value[0], "Parting") self.assertEqual(value[1], "is such") self.assertEqual(value[2], "sweet") self.assertEqual(value[3], "sorrow.")
def testGetEnum(self): domain = 'enum_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 2) self.assertEqual(shape['dims'][0], 4) self.assertEqual(shape['dims'][1], 7) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_ENUM') typeBase = typeItem['base'] self.assertEqual(typeBase['class'], 'H5T_INTEGER') self.assertEqual(typeBase['base'], 'H5T_STD_I16BE') self.assertTrue('mapping' in typeItem) mapping = typeItem['mapping'] self.assertEqual(len(mapping), 4) self.assertEqual(mapping['SOLID'], 0) self.assertEqual(mapping['LIQUID'], 1) self.assertEqual(mapping['GAS'], 2) self.assertEqual(mapping['PLASMA'], 3)
def testGetRegionReference(self): domain = 'regionref_attr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) ds1_uuid = helper.getUUID(domain, root_uuid, 'DS1') ds2_uuid = helper.getUUID(domain, root_uuid, 'DS2') req = helper.getEndpoint() + "/datasets/" + ds1_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 2) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_REFERENCE') self.assertEqual(typeItem['base'], 'H5T_STD_REF_DSETREG') self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 2) value = rspJson['value'] self.assertEqual(len(value), 2) ref0 = value[0] self.assertEqual(ref0['select_type'], 'H5S_SEL_POINTS') self.assertEqual(ref0['id'], ds2_uuid) points = ref0['selection'] self.assertEqual(len(points), 4) self.assertEqual(points[0], [0, 1]) self.assertEqual(points[1], [2,11]) self.assertEqual(points[2], [1, 0]) self.assertEqual(points[3], [2, 4]) ref1 = value[1] self.assertEqual(ref1['select_type'], 'H5S_SEL_HYPERSLABS') self.assertEqual(ref1['id'], ds2_uuid) hyperslabs = ref1['selection'] self.assertEqual(len(hyperslabs), 4) self.assertEqual(hyperslabs[0][0], [0, 0]) self.assertEqual(hyperslabs[0][1], [0, 2]) self.assertEqual(hyperslabs[1][0], [0, 11]) self.assertEqual(hyperslabs[1][1], [0, 13]) self.assertEqual(hyperslabs[2][0], [2, 0]) self.assertEqual(hyperslabs[2][1], [2, 2]) self.assertEqual(hyperslabs[3][0], [2, 11]) self.assertEqual(hyperslabs[3][1], [2, 13])
def testBadQuery(self): domain = 'compound.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'dset') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" req += "?query=foobar" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400)
def testPutObjectReference(self): domain = 'objref_dset_updated.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) ds1_uuid = helper.getUUID(domain, root_uuid, 'DS1') ds2_uuid = helper.getUUID(domain, root_uuid, 'DS2') g1_uuid = helper.getUUID(domain, root_uuid, 'G1') req = helper.getEndpoint() + "/datasets/" + ds1_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) value = ('datasets/' + ds2_uuid, 'groups/' + g1_uuid) payload = {'value': value} req = self.endpoint + "/datasets/" + ds1_uuid + "/value" rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 200) # write value
def testPutObjReference(self): domain = 'tall_updated.' + config.get('domain') attr_name = 'attr9' root_uuid = helper.getRootUUID(domain) g2_uuid = helper.getUUID(domain, root_uuid, 'g2') d22_uuid = helper.getUUID(domain, g2_uuid, 'dset2.2') headers = {'host': domain} datatype = {'class': 'H5T_REFERENCE', 'base': 'H5T_STD_REF_OBJ' } value = ('groups/' + g2_uuid, '', 'datasets/' + d22_uuid) payload = {'type': datatype, 'shape': 3, 'value': value} req = self.endpoint + "/groups/" + root_uuid + "/attributes/" + attr_name rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 201) # create attribute rspJson = json.loads(rsp.text) self.assertEqual(len(rspJson['hrefs']), 3)
def testGetObjectReference(self): domain = 'objref_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) ds1_uuid = helper.getUUID(domain, root_uuid, 'DS1') ds2_uuid = helper.getUUID(domain, root_uuid, 'DS2') g1_uuid = helper.getUUID(domain, root_uuid, 'G1') req = helper.getEndpoint() + "/datasets/" + ds1_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 2) self.assertEqual(value[0], '/groups/' + g1_uuid) self.assertEqual(value[1], '/datasets/' + ds2_uuid)
def testGetOpaque(self): domain = 'opaque_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) # get for Opaque data is not supported yet. Check that the call returns 501 self.failUnlessEqual(rsp.status_code, 501)
def testGetExternal(self): logging.info("LinkTest.testGetExternal") for domain_name in ('tall', 'tall_ro'): g1_uuid = None domain = domain_name + '.' + config.get('domain') root_uuid = helper.getRootUUID(domain) g1_uuid = helper.getUUID(domain, root_uuid, 'g1') g12_uuid = helper.getUUID(domain, g1_uuid, 'g1.2') req = self.endpoint + "/groups/" + g12_uuid + "/links/extlink" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) target = rspJson['href'] self.failUnlessEqual(target, "http://somefile/#h5path(somepath)") self.assertTrue("created" in rspJson) self.assertTrue("lastModified" in rspJson) self.failUnlessEqual(rspJson['class'], 'external') self.failUnlessEqual(rspJson['title'], 'extlink')
def testDelete(self): domain = 'tall_dset112_deleted.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) g1_uuid = helper.getUUID(domain, root_uuid, 'g1') self.assertTrue(helper.validateId(g1_uuid)) g11_uuid = helper.getUUID(domain, g1_uuid, 'g1.1') self.assertTrue(helper.validateId(g11_uuid)) d112_uuid = helper.getUUID(domain, g11_uuid, 'dset1.1.2') self.assertTrue(helper.validateId(d112_uuid)) req = self.endpoint + "/datasets/" + d112_uuid headers = {'host': domain} rsp = requests.delete(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) # verify that a GET on the dataset fails req = helper.getEndpoint() + "/datasets/" + d112_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 410)
def testGetLinks(self): logging.info("LinkTest.testGetLinks") for domain_name in ('tall', 'tall_ro'): g1_uuid = None domain = domain_name + '.' + config.get('domain') root_uuid = helper.getRootUUID(domain) g1_uuid = helper.getUUID(domain, root_uuid, 'g1') g12_uuid = helper.getUUID(domain, g1_uuid, 'g1.2') req = self.endpoint + "/groups/" + g12_uuid + "/links" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue("links" in rspJson) links = rspJson["links"] self.assertEqual(len(links), 2) for link in links: self.assertTrue("title" in link) self.assertTrue("class" in link)
def testGetSoft(self): logging.info("LinkTest.testGetSoft") for domain_name in ('tall', 'tall_ro'): g1_uuid = None domain = domain_name + '.' + config.get('domain') root_uuid = helper.getRootUUID(domain) g1_uuid = helper.getUUID(domain, root_uuid, 'g1') g12_uuid = helper.getUUID(domain, g1_uuid, 'g1.2') g121_uuid = helper.getUUID(domain, g12_uuid, 'g1.2.1') req = self.endpoint + "/groups/" + g121_uuid + "/links/slink" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) target = rspJson['href'] self.failUnlessEqual(target, '/#h5path(somevalue)') self.assertTrue("created" in rspJson) self.assertTrue("lastModified" in rspJson) self.failUnlessEqual(rspJson['class'], 'soft') self.failUnlessEqual(rspJson['title'], 'slink')
def testPutRegionReference(self): domain = 'regionref_dset_updated.' + config.get('domain') root_uuid = helper.getRootUUID(domain) ds1_uuid = helper.getUUID(domain, root_uuid, 'DS1') ds2_uuid = helper.getUUID(domain, root_uuid, 'DS2') req = helper.getEndpoint() + "/datasets/" + ds1_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) value = rspJson['value'] self.failUnlessEqual(len(value), 2) updated_value = (value[1], value[0]) # switch elements payload = {'value': updated_value} rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 200) # write value
def testGetCommitted(self): domain = 'committed_type.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.failUnlessEqual(len(data), 4)
def testGetSimpleOneElementString(self): domain = 'scalar.' + config.get('domain') headers = {'host': domain} root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, '1ds') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.assertEqual(data, ["hello",])
def testGetSelectionBadQuery(self): domain = 'tall.' + config.get('domain') headers = {'host': domain} rootUUID = helper.getRootUUID(domain) g1UUID = helper.getUUID(domain, rootUUID, 'g1') g11UUID = helper.getUUID(domain, g1UUID, 'g1.1') # rank 1 dataset dset112UUID = helper.getUUID(domain, g11UUID, 'dset1.1.2') # pass in non-numeric start req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?dim1_start=abc" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400) # pass in 0 step req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?dim1_start=2&dim1_step=0" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400)
def testGetScalarString(self): domain = 'scalar.' + config.get('domain') headers = {'host': domain} root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, '0ds') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.assertEqual(data, "hello")
def testGet(self): domain = 'tall.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) g2_uuid = helper.getUUID(domain, root_uuid, 'g2') dset21_uuid = helper.getUUID(domain, g2_uuid, 'dset2.1') req = helper.getEndpoint() + "/datasets/" + dset21_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('type' in rspJson) type = rspJson['type'] self.assertEqual(type['class'], 'H5T_FLOAT') self.assertEqual(type['base'], 'H5T_IEEE_F32BE') self.assertTrue('shape' in rspJson) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 10) self.assertEqual(shape['maxdims'][0], 10)
def testPutRegionReference(self): domain = 'tall_updated.' + config.get('domain') attr_name = 'attr10' root_uuid = helper.getRootUUID(domain) g1_uuid = helper.getUUID(domain, root_uuid, 'g1') g11_uuid = helper.getUUID(domain, g1_uuid, 'g1.1') d111_uuid = helper.getUUID(domain, g11_uuid, 'dset1.1.1') headers = {'host': domain} datatype = {'class': 'H5T_REFERENCE', 'base': 'H5T_STD_REF_DSETREG'} region_ref = {} region_ref['id'] = d111_uuid region_ref['select_type'] = 'H5S_SEL_HYPERSLABS' region_ref['selection'] = (((0, 0), (1, 1)), ((2, 2), (4, 4)), ((5, 5), (10, 10))) point_ref = {} point_ref['id'] = d111_uuid point_ref['select_type'] = 'H5S_SEL_POINTS' point_ref['selection'] = ((0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9)) all_ref = {} all_ref['id'] = d111_uuid all_ref['select_type'] = 'H5S_SEL_ALL' none_ref = {} none_ref['id'] = d111_uuid none_ref['select_type'] = 'H5S_SEL_NONE' value = (region_ref, point_ref, all_ref, none_ref) payload = {'type': datatype, 'shape': 4, 'value': value} req = self.endpoint + "/groups/" + root_uuid + "/attributes/" + attr_name rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 201) # create attribute rspJson = json.loads(rsp.text) self.assertEqual(len(rspJson['hrefs']), 3)
def testPutInvalidShape(self): domain = 'resized.' + config.get('domain') headers = {'host': domain} root_uuid = helper.getRootUUID(domain) resizable_1d_uuid = helper.getUUID(domain, root_uuid, 'resizable_1d') req = helper.getEndpoint() + "/datasets/" + resizable_1d_uuid + "/shape" payload = { 'shape': [20, 10] } # wrong rank headers = {'host': domain} rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 400) payload = { 'shape': 8 } # try to shrink headers = {'host': domain} rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 400) resizable_2d_uuid = helper.getUUID(domain, root_uuid, 'resizable_2d') req = helper.getEndpoint() + "/datasets/" + resizable_2d_uuid + "/shape" payload = { 'shape': [12, 20] } # try to extend non-extendable dimension headers = {'host': domain} rsp = requests.put(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 400)
def testGetNullSpace(self): domain = 'null_space_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) data = rspJson['value'] self.assertEqual(data, None)
def testGetSelectionBadQuery(self): domain = 'tall.' + config.get('domain') headers = {'host': domain} rootUUID = helper.getRootUUID(domain) g1UUID = helper.getUUID(domain, rootUUID, 'g1') g11UUID = helper.getUUID(domain, g1UUID, 'g1.1') # rank 1 dataset dset112UUID = helper.getUUID(domain, g11UUID, 'dset1.1.2') # don't use bracket req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?select=abc" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400) # not a number req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?select=[a:b:c]" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400) # start is negative req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?select=[-1:3]" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400) # stop past extent req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?select=[1:25]" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400) # pass in 0 step req = helper.getEndpoint() + "/datasets/" + dset112UUID + "/value" + \ "?select=[1:2:0]" rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 400)
def testGetScalar(self): domain = 'scalar.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, '0d') req = helper.getEndpoint() + "/datasets/" + dset_uuid + '/type' headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) typeItem = rspJson['type'] self.assertEqual(typeItem['base'], 'H5T_STD_I32LE') self.assertEqual(typeItem['class'], 'H5T_INTEGER')
def testGetCompoundArray(self): # compound where the fields are array type domain = 'tstr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'comp1') req = helper.getEndpoint() + "/datasets/" + dset_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 2) self.assertEqual(shape['dims'][0], 3) self.assertEqual(shape['dims'][1], 6) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_COMPOUND') self.assertTrue('fields' in typeItem) fields = typeItem['fields'] self.assertEqual(len(fields), 2) intField = fields[0] self.assertEqual(intField['name'], 'int_array') self.assertTrue('type' in intField) intFieldType = intField['type'] self.assertEqual(intFieldType['class'], 'H5T_ARRAY') intFieldTypeDims = intFieldType['dims'] self.assertEqual(len(intFieldTypeDims), 2) self.assertEqual(intFieldTypeDims[0], 8) self.assertEqual(intFieldTypeDims[1], 10) self.assertTrue('base' in intFieldType) intFieldTypeBase = intFieldType['base'] self.assertEqual(intFieldTypeBase['class'], 'H5T_INTEGER') self.assertEqual(intFieldTypeBase['base'], 'H5T_STD_I32BE') strField = fields[1] self.assertEqual(strField['name'], 'string') self.assertTrue('type' in strField) strFieldType = strField['type'] self.assertEqual(strFieldType['class'], 'H5T_ARRAY') strFieldTypeDims = strFieldType['dims'] self.assertEqual(len(strFieldTypeDims), 2) self.assertEqual(strFieldTypeDims[0], 3) self.assertEqual(strFieldTypeDims[1], 4) self.assertTrue('base' in strFieldType) strFieldTypeBase = strFieldType['base'] self.assertEqual(strFieldTypeBase['class'], 'H5T_STRING') self.assertEqual(strFieldTypeBase['cset'], 'H5T_CSET_ASCII') self.assertEqual(strFieldTypeBase['order'], 'H5T_ORDER_NONE') self.assertEqual(strFieldTypeBase['strsize'], 32)
def testGetExternal(self): logging.info("LinkTest.testGetExternal") for domain_name in ('tall', 'tall_ro'): g1_uuid = None domain = domain_name + '.' + config.get('domain') root_uuid = helper.getRootUUID(domain) g1_uuid = helper.getUUID(domain, root_uuid, 'g1') g12_uuid = helper.getUUID(domain, g1_uuid, 'g1.2') req = self.endpoint + "/groups/" + g12_uuid + "/links/extlink" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.assertEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue("created" in rspJson) self.assertTrue("lastModified" in rspJson) target = rspJson['link'] # self.assertEqual(target, "http://somefile/#h5path(somepath)") self.assertEqual(target['class'], 'H5L_TYPE_EXTERNAL') self.assertEqual(target['h5domain'], 'somefile') self.assertEqual(target['h5path'], 'somepath') self.assertEqual(target['title'], 'extlink') self.assertTrue('collection' not in target)
def testGetFill(self): domain = 'fillvalue.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'dset') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/shape" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertEqual(rspJson['class'], 'H5S_SIMPLE') self.assertEqual(len(rspJson['dims']), 2) self.assertEqual(rspJson['dims'][0], 10) self.assertEqual(rspJson['maxdims'][1], 10) self.assertEqual(rspJson['fillvalue'], 42)
def testGetRegionReference(self): domain = 'regionref_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) ds1_uuid = helper.getUUID(domain, root_uuid, 'DS1') ds2_uuid = helper.getUUID(domain, root_uuid, 'DS2') req = helper.getEndpoint() + "/datasets/" + ds1_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 2) ref0 = value[0] self.assertEqual(ref0['select_type'], 'H5S_SEL_POINTS') self.assertEqual(ref0['id'], ds2_uuid) points = ref0['selection'] self.assertEqual(len(points), 4) self.assertEqual(points[0], [0, 1]) self.assertEqual(points[1], [2, 11]) self.assertEqual(points[2], [1, 0]) self.assertEqual(points[3], [2, 4]) ref1 = value[1] self.assertEqual(ref1['select_type'], 'H5S_SEL_HYPERSLABS') self.assertEqual(ref1['id'], ds2_uuid) hyperslabs = ref1['selection'] self.assertEqual(len(hyperslabs), 4) self.assertEqual(hyperslabs[0][0], [0, 0]) self.assertEqual(hyperslabs[0][1], [0, 2]) self.assertEqual(hyperslabs[1][0], [0, 11]) self.assertEqual(hyperslabs[1][1], [0, 13]) self.assertEqual(hyperslabs[2][0], [2, 0]) self.assertEqual(hyperslabs[2][1], [2, 2]) self.assertEqual(hyperslabs[3][0], [2, 11]) self.assertEqual(hyperslabs[3][1], [2, 13])
def testPost(self): for domain_name in ('tall', 'tall_ro'): domain = domain_name + '.' + config.get('domain') rootUUID = helper.getRootUUID(domain) g1UUID = helper.getUUID(domain, rootUUID, 'g1') g11UUID = helper.getUUID(domain, g1UUID, 'g1.1') # rank 1 dataset dset112UUID = helper.getUUID(domain, g11UUID, 'dset1.1.2') points = (19, 17, 13, 11, 7, 5, 3, 2) req = self.endpoint + "/datasets/" + dset112UUID + "/value" payload = {'points': points} headers = {'host': domain} rsp = requests.post(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.assertEqual(len(data), len(points)) self.assertEqual(points[0], data[0]) # rank 2 dataset dset111UUID = helper.getUUID(domain, g11UUID, 'dset1.1.1') points = [] for i in range(10): points.append((i, i)) # get diagonal req = self.endpoint + "/datasets/" + dset111UUID + "/value" payload = {'points': points} headers = {'host': domain} rsp = requests.post(req, data=json.dumps(payload), headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.assertEqual(len(data), len(points)) self.assertEqual(9, data[3])
def testGetCompound(self): domain = 'compound.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dset_uuid = helper.getUUID(domain, root_uuid, 'dset') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) data = rspJson['value'] self.failUnlessEqual(len(data), 72) first = data[0] self.failUnlessEqual(len(first), 5) self.failUnlessEqual(first[0], 24) self.failUnlessEqual(first[1], "13:53")
def testGetVlen(self): domain = 'vlen_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 2) self.assertEqual(len(value[1]), 12) self.assertEqual(value[1][11], 144)
def testGetObjectReference(self): domain = 'objref_attr.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) ds1_uuid = helper.getUUID(domain, root_uuid, 'DS1') ds2_uuid = helper.getUUID(domain, root_uuid, 'DS2') g1_uuid = helper.getUUID(domain, root_uuid, 'G1') req = helper.getEndpoint() + "/datasets/" + ds1_uuid + "/attributes/A1" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 2) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_REFERENCE') self.assertEqual(typeItem['base'], 'H5T_STD_REF_OBJ') self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 2) self.assertEqual(value[0], '/groups/' + g1_uuid) self.assertEqual(value[1], '/datasets/' + ds2_uuid)
def testGet(self): domain = 'namedtype.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dtype_uuid = helper.getUUID(domain, root_uuid, 'dtype_simple') self.assertTrue(helper.validateId(dtype_uuid)) req = helper.getEndpoint() + "/datatypes/" + dtype_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertEqual(rspJson['id'], dtype_uuid) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_FLOAT') self.assertEqual(typeItem['base'], 'H5T_IEEE_F32LE') self.assertEqual(rspJson['attributeCount'], 1)
def testDelete(self): domain = 'namedtype_deleted.' + config.get('domain') root_uuid = helper.getRootUUID(domain) dtype_uuid = helper.getUUID(domain, root_uuid, 'dtype_simple') self.assertTrue(helper.validateId(dtype_uuid)) req = helper.getEndpoint() + "/datatypes/" + dtype_uuid headers = {'host': domain} rsp = requests.delete(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) # verify that it's gone req = helper.getEndpoint() + "/datatypes/" + dtype_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 410)
def testDelete(self): domain = 'tall_g2_deleted.' + config.get('domain') rootUUID = helper.getRootUUID(domain) helper.validateId(rootUUID) g2UUID = helper.getUUID(domain, rootUUID, 'g2') self.assertTrue(helper.validateId(g2UUID)) req = self.endpoint + "/groups/" + g2UUID headers = {'host': domain} rsp = requests.delete(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue("hrefs" in rspJson) # do a GET, should return 410 (GONE) req = self.endpoint + "/groups/" + g2UUID rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 410)
def testGetVLenString(self): domain = 'vlen_string_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 4) self.assertEqual(value[0], "Parting") self.assertEqual(value[1], "is such") self.assertEqual(value[2], "sweet") self.assertEqual(value[3], "sorrow.")
def testGetUDLink(self): logging.info("LinkTest.testGetUDLink") domain_name = 'tall_with_udlink' domain = domain_name + '.' + config.get('domain') root_uuid = helper.getRootUUID(domain) g2_uuid = helper.getUUID(domain, root_uuid, 'g2') req = self.endpoint + "/groups/" + g2_uuid + "/links/udlink" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue("created" in rspJson) self.assertTrue("lastModified" in rspJson) self.failUnlessEqual(rspJson['class'], 'user') self.failUnlessEqual(rspJson['title'], 'udlink') self.failUnlessEqual(rspJson['href'], '???')
def testGetSimpleOneElementString(self): domain = 'scalar.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, '1ds') req = helper.getEndpoint() + "/datasets/" + dset_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) type = rspJson['type'] self.assertEqual(type['class'], 'H5T_STRING') shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertTrue('dims' in shape) self.assertEqual(shape['dims'][0], 1)
def testGetRegionReference(self): domain = 'regionref_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) shape = rspJson['shape'] self.assertEqual(shape['class'], 'H5S_SIMPLE') self.assertEqual(len(shape['dims']), 1) self.assertEqual(shape['dims'][0], 2) typeItem = rspJson['type'] self.assertEqual(typeItem['class'], 'H5T_REFERENCE') self.assertEqual(typeItem['base'], 'H5T_STD_REF_DSETREG')
def testGetArray(self): domain = 'array_dset.' + config.get('domain') root_uuid = helper.getRootUUID(domain) self.assertTrue(helper.validateId(root_uuid)) dset_uuid = helper.getUUID(domain, root_uuid, 'DS1') req = helper.getEndpoint() + "/datasets/" + dset_uuid + "/value" headers = {'host': domain} rsp = requests.get(req, headers=headers) self.failUnlessEqual(rsp.status_code, 200) rspJson = json.loads(rsp.text) self.assertTrue('value' in rspJson) value = rspJson['value'] self.assertEqual(len(value), 4) # four dataset elements (each an array) self.assertEqual(len(value[0]), 3) # 3x5 array shape self.assertEqual(len((value[0])[0]), 5) # 3x5 array shape self.assertEqual(value[0][2][4], -8) # pull out a value from the array