Пример #1
0
    def test_get_ids_in_region_single_cube(self):
        """Test single cuboid using DynamoDB index."""
        cube_dim_tuple = (self.x_dim, self.y_dim, self.z_dim)
        cube1 = Cube.create_cube(self.resource, [self.x_dim, self.y_dim, self.z_dim])
        cube1.zeros()
        cube1.data[0][0][40][0] = 55555
        cube1.data[0][0][50][0] = 66666000000000
        pos1 = [2*self.x_dim, 3*self.y_dim, 2*self.z_dim]
        cube1.morton_id = XYZMorton(pos1)

        sp = SpatialDB(self.kvio_config, self.state_config, self.object_store_config)

        resolution = 0
        sp.write_cuboid(self.resource, pos1, resolution, cube1.data, time_sample_start=0)

        # Make sure cube write complete and correct.
        actual_cube = sp.cutout(self.resource, pos1, cube_dim_tuple, resolution)
        np.testing.assert_array_equal(cube1.data, actual_cube.data)

        corner = (2*self.x_dim, 3*self.y_dim, 2*self.z_dim)
        extent = (self.x_dim, self.y_dim, self.z_dim)
        t_range = [0, 1]
        version = 0
        expected = ['55555', '66666000000000']

        # Method under test.
        actual = sp.get_ids_in_region(
            self.resource, resolution, corner, extent, t_range, version)

        self.assertIn('ids', actual)
        self.assertCountEqual(expected, actual['ids'])
Пример #2
0
    def test_get_ids_in_region_multiple_cubes_and_x_partials(self):
        """
        Region has some full cuboids and some partial cuboids along the x axis.
        """
        cube_dim_tuple = (self.x_dim, self.y_dim, self.z_dim)
        cube1 = Cube.create_cube(self.resource, [self.x_dim, self.y_dim, self.z_dim])
        cube1.zeros()
        cube1.data[0][0][40][105] = 55555
        cube1.data[0][0][50][105] = 66666
        pos1 = [7*self.x_dim, 5*self.y_dim, 2*self.z_dim]
        cube1.morton_id = XYZMorton(pos1)

        cube2 = Cube.create_cube(self.resource, [self.x_dim, self.y_dim, self.z_dim])
        cube2.zeros()
        cube2.data[0][0][40][105] = 55555
        cube2.data[0][0][50][105] = 77777
        pos2 = [8*self.x_dim, 5*self.y_dim, 2*self.z_dim]
        cube2.morton_id = XYZMorton(pos2)

        cube3 = Cube.create_cube(self.resource, [self.x_dim, self.y_dim, self.z_dim])
        cube3.zeros()
        cube3.data[0][0][0][105] = 88888
        pos3 = [9*self.x_dim, 5*self.y_dim, 2*self.z_dim]
        cube3.morton_id = XYZMorton(pos3)

        sp = SpatialDB(self.kvio_config, self.state_config, self.object_store_config)

        resolution = 0
        sp.write_cuboid(self.resource, pos1, resolution, cube1.data, time_sample_start=0)
        sp.write_cuboid(self.resource, pos2, resolution, cube2.data, time_sample_start=0)
        sp.write_cuboid(self.resource, pos3, resolution, cube3.data, time_sample_start=0)

        # Make sure cube write complete and correct.
        actual_cube = sp.cutout(self.resource, pos1, cube_dim_tuple, resolution)
        np.testing.assert_array_equal(cube1.data, actual_cube.data)
        actual_cube = sp.cutout(self.resource, pos2, cube_dim_tuple, resolution)
        np.testing.assert_array_equal(cube2.data, actual_cube.data)
        actual_cube = sp.cutout(self.resource, pos3, cube_dim_tuple, resolution)
        np.testing.assert_array_equal(cube3.data, actual_cube.data)

        corner = (7*self.x_dim+100, 5*self.y_dim, 2*self.z_dim)
        extent = (2*self.x_dim+self.x_dim//2, self.y_dim, self.z_dim)
        t_range = [0, 1]
        version = 0
        expected = ['55555', '66666', '77777', '88888']

        # Method under test.
        actual = sp.get_ids_in_region(
            self.resource, resolution, corner, extent, t_range, version)

        self.assertIn('ids', actual)
        self.assertCountEqual(expected, actual['ids'])
Пример #3
0
    def test_get_ids_in_region_multiple_partial_cubes(self):
        """
        Region cuboid aligned in x, but doesn't span full cuboids in the y 
        and z.
        """
        cube1 = Cube.create_cube(self.resource, [self.x_dim, self.y_dim, self.z_dim])
        cube1.zeros()
        cube1.data[0][0][40][0] = 55555
        cube1.data[0][0][50][0] = 66666
        pos1 = [4*self.x_dim, 4*self.y_dim, 2*self.z_dim]
        cube1.morton_id = XYZMorton(pos1)

        cube2 = Cube.create_cube(self.resource, [self.x_dim, self.y_dim, self.z_dim])
        cube2.zeros()
        cube2.data[0][0][40][0] = 55555
        cube2.data[0][0][50][0] = 77777
        pos2 = [5*self.x_dim, 4*self.y_dim, 2*self.z_dim]
        cube2.morton_id = XYZMorton(pos2)

        sp = SpatialDB(self.kvio_config, self.state_config, self.object_store_config)

        resolution = 0
        sp.write_cuboid(self.resource, pos1, resolution, cube1.data, time_sample_start=0)
        sp.write_cuboid(self.resource, pos2, resolution, cube2.data, time_sample_start=0)

        # Not verifying writes here because get_ids_in_region() should be doing
        # cutouts due to the region not containing full cuboids.

        corner = (4*self.x_dim, 4*self.y_dim, 2*self.z_dim)
        extent = (2*self.x_dim, 60, 10)
        t_range = [0, 1]
        version = 0
        expected = ['55555', '66666', '77777']

        # Method under test.
        actual = sp.get_ids_in_region(
            self.resource, resolution, corner, extent, t_range, version)

        self.assertIn('ids', actual)
        self.assertCountEqual(expected, actual['ids'])