예제 #1
0
    def test_slice(self):
        db_name = 'test.h5'
        ds_name = 'testds'
        data = np.random.randint(0, 255, size=(5, 10)).astype('uint8')

        self.create_db(db_name)
        self.create_ds(db_name, ds_name, data)

        cmd = {
            CMD_KW_CMD: CMD_SLICE_DATASET,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name
            }
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = slice(0, 0, 0)  # invalid slice
        response = up(handle_request(cmd))

        self.assertEqual(response[CMD_KW_STATUS], VALUE_ERROR)

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = slice(0, 1, 1)
        response = up(handle_request(cmd))

        self.assertEqual(response[CMD_KW_STATUS], OK)
        assert_array_equal(response[RESPONSE_DATA], data[:1])
예제 #2
0
    def test_create_dataset(self):
        db_name = 'test.h5'
        self.create_db(db_name)

        cmd = {
            CMD_KW_CMD: CMD_CREATE_DATASET,
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS] = {CMD_KW_DB: db_name}
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS][CMD_KW_PATH] = 'myds'
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_DATA)

        cmd[CMD_KW_DATA] = np.random.randint(0, 255,
                                             size=(5, 10)).astype('uint8')

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], DATASET_EXISTS)
예제 #3
0
    def test_connect_database(self):
        cmd = {
            CMD_KW_CMD: CMD_CONNECT_DATABASE,
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        db_name = 'test.h5'
        cmd[CMD_KW_ARGS] = {CMD_KW_DB: db_name}
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], FILE_NOT_FOUND)

        self.create_db(db_name)
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)
예제 #4
0
    def test_get_node(self):
        db_name = 'test.h5'
        ds_name = 'testds'
        grp_name = 'testgrp'
        data = np.random.randint(0, 255, size=(5, 10)).astype('uint8')

        self.create_db(db_name)
        self.create_grp(db_name, grp_name)
        self.create_ds(db_name, ds_name, data)

        # get group
        cmd = {
            CMD_KW_CMD: CMD_GET_NODE,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: 'invalid'
            }
        }

        response = unpack(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], NODE_NOT_FOUND)

        cmd[CMD_KW_ARGS][CMD_KW_PATH] = grp_name  # now use existing group name

        response = unpack(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)
        self.assertEqual(response[CMD_KW_DATA][RESPONSE_NODE_TYPE],
                         NODE_TYPE_GROUP)

        # get dataset
        cmd = {
            CMD_KW_CMD: CMD_GET_NODE,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name
            }
        }

        response = unpack(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)
        self.assertEqual(response[CMD_KW_DATA][RESPONSE_NODE_TYPE],
                         NODE_TYPE_DATASET)
        self.assertEqual(response[CMD_KW_DATA][RESPONSE_NODE_SHAPE],
                         data.shape)
        self.assertEqual(response[CMD_KW_DATA][RESPONSE_NODE_DTYPE],
                         data.dtype)
예제 #5
0
 def create_grp(self, db, path):
     cmd = {
         CMD_KW_CMD: CMD_CREATE_GROUP,
         CMD_KW_ARGS: {
             CMD_KW_DB: db,
             CMD_KW_PATH: path
         }
     }
     return up(handle_request(cmd))
예제 #6
0
 def create_db(self, name):
     cmd = {
         CMD_KW_CMD: CMD_CREATE_DATABASE,
         CMD_KW_ARGS: {
             CMD_KW_DB: name,
             CMD_KW_OVERWRITE: False,
         }
     }
     return unpack(handle_request(cmd))
예제 #7
0
 def create_ds(self, db, path, data):
     cmd = {
         CMD_KW_CMD: CMD_CREATE_DATASET,
         CMD_KW_ARGS: {
             CMD_KW_DB: db,
             CMD_KW_PATH: path
         },
         CMD_KW_DATA: data
     }
     return up(handle_request(cmd))
예제 #8
0
    def test_create_group(self):
        db_name = 'test.h5'
        self.create_db(db_name)

        cmd = {
            CMD_KW_CMD: CMD_CREATE_GROUP,
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS] = {CMD_KW_DB: db_name}
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS][CMD_KW_PATH] = 'mygrp'
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], GROUP_EXISTS)
예제 #9
0
    def test_create_database(self):
        cmd = {
            CMD_KW_CMD: CMD_CREATE_DATABASE,
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        db_name = ''
        response = self.create_db(db_name)
        self.assertEqual(response[CMD_KW_STATUS], INVALID_ARGUMENT)

        db_name = 'test.h5'
        response = self.create_db(db_name)
        self.assertEqual(response[CMD_KW_STATUS], CREATED)
        self.assertTrue(os.path.isfile(os.path.join(self.test_dir, db_name)))
예제 #10
0
    def test_boradcast(self):
        db_name = 'test.h5'
        ds_name = 'testds'
        data = np.array([[1, 2, 3], [4, 5, 6]])

        self.create_db(db_name)
        self.create_ds(db_name, ds_name, data)

        cmd = {
            CMD_KW_CMD: CMD_BROADCAST_DATASET,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name
            }
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_DATA)

        new_data = np.array([8, 9, 10])
        cmd[CMD_KW_DATA] = new_data

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = slice(0, 0, 0)  # invalid slice
        response = up(handle_request(cmd))

        self.assertEqual(response[CMD_KW_STATUS], VALUE_ERROR)

        cmd[CMD_KW_DATA] = np.array([8, 9, 10, 11])  # invalid data
        cmd[CMD_KW_ARGS][CMD_KW_KEY] = slice(0, 1, 1)
        response = up(handle_request(cmd))

        self.assertEqual(response[CMD_KW_STATUS], TYPE_ERROR)

        cmd[CMD_KW_DATA] = new_data
        response = up(handle_request(cmd))

        self.assertEqual(response[CMD_KW_STATUS], OK)

        cmd = {
            CMD_KW_CMD: CMD_SLICE_DATASET,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name,
                CMD_KW_KEY: slice(None, None, None)
            }
        }

        response = up(handle_request(cmd))
        assert_array_equal(response[RESPONSE_DATA], [new_data, data[1]])
예제 #11
0
 def test_no_cmd(self):
     response = up(handle_request({}))
     self.assertEqual(response[CMD_KW_STATUS], UNKNOWN_COMMAND)
예제 #12
0
 def create_db(self, name):
     cmd = {CMD_KW_CMD: CMD_CREATE_DATABASE, CMD_KW_ARGS: {CMD_KW_DB: name}}
     return up(handle_request(cmd))
예제 #13
0
    def test_attrs(self):
        db_name = 'test.h5'
        ds_name = 'testds'
        data = np.array([[1, 2, 3], [4, 5, 6]])

        self.create_db(db_name)
        self.create_ds(db_name, ds_name, data)

        cmd = {
            CMD_KW_CMD: CMD_ATTRIBUTES_SET,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name
            }
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        attr_key = 'key'

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = attr_key
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_DATA)

        attr_data = 'test'
        cmd[CMD_KW_DATA] = attr_data
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)

        cmd = {
            CMD_KW_CMD: CMD_ATTRIBUTES_GET,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name
            }
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], MISSING_ARGUMENT)

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = 'invalid'
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], KEY_ERROR)

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = attr_key
        response = up(handle_request(cmd))
        self.assertEqual(response[CMD_KW_STATUS], OK)
        self.assertEqual(response[RESPONSE_DATA], attr_data)

        cmd[CMD_KW_CMD] = CMD_ATTRIBUTES_CONTAINS
        response = up(handle_request(cmd))

        self.assertEqual(response[CMD_KW_STATUS], OK)
        self.assertTrue(response[RESPONSE_ATTRS_CONTAINS])

        cmd[CMD_KW_ARGS][CMD_KW_KEY] = 'invalid'
        response = up(handle_request(cmd))
        self.assertFalse(response[RESPONSE_ATTRS_CONTAINS])

        cmd = {
            CMD_KW_CMD: CMD_ATTRIBUTES_KEYS,
            CMD_KW_ARGS: {
                CMD_KW_DB: db_name,
                CMD_KW_PATH: ds_name
            }
        }

        response = up(handle_request(cmd))
        self.assertEqual(response[RESPONSE_ATTRS_KEYS], (attr_key, ))