def sendMission(args, client): interop_client = AsyncClient(args.interop_url, args.interop_username, args.interop_password) mission = interop_client.get_mission(args.mission_id).result() mission_json = json_format.MessageToJson(mission) mission_dictionary = json.loads(mission_json) print(mission_dictionary)
class TestClient(unittest.TestCase): """Test the Client class. The Client class is a very thin wrapper, so there is very little to test. """ def setUp(self): """Create a logged in Client.""" # Test rest with non-admin clients. self.client = Client(server, username, password) self.async_client = AsyncClient(server, username, password) def test_get_mission(self): """Test getting a mission.""" mission = self.client.get_mission(1) async_mission = self.async_client.get_mission(1).result() # Check basic field info. self.assertEqual(1, mission.id) self.assertEqual(1, async_mission.id) def test_post_telemetry(self): """Test sending some telemetry.""" t = interop_api_pb2.Telemetry() t.latitude = 38 t.longitude = -76 t.altitude = 100 t.heading = 90 # Raises an exception on error. self.client.post_telemetry(t) self.async_client.post_telemetry(t).result() def test_post_bad_telemetry(self): """Test sending some (incorrect) telemetry.""" t = interop_api_pb2.Telemetry() t.latitude = 38 t.longitude = -76 t.altitude = 100 t.heading = 400 # Out of range. with self.assertRaises(InteropError): self.client.post_telemetry(t) with self.assertRaises(InteropError): self.async_client.post_telemetry(t).result() def test_get_obstacles(self): """Test getting obstacles.""" obstacles = self.client.get_obstacles() async_obstacles = self.async_client.get_obstacles().result() # No exceptions is a good sign, let's see if the data matches the fixture. self.assertEqual(2, len(obstacles.stationary_obstacles)) self.assertEqual(2, len(async_obstacles.stationary_obstacles)) radii = [o.radius for o in obstacles.stationary_obstacles] async_radii = [o.radius for o in async_obstacles.stationary_obstacles] self.assertIn(50, radii) self.assertIn(50, async_radii) self.assertIn(150, radii) self.assertIn(150, async_radii) heights = [o.height for o in obstacles.stationary_obstacles] self.assertIn(300, heights) self.assertIn(200, heights) async_heights = [ o.height for o in async_obstacles.stationary_obstacles ] self.assertIn(300, async_heights) self.assertIn(200, async_heights) def test_odlcs(self): """Test odlc workflow.""" # Post a odlc gets an updated odlc. odlc = interop_api_pb2.Odlc() odlc.type = interop_api_pb2.Odlc.STANDARD post_odlc = self.client.post_odlc(odlc) async_post_odlc = self.client.post_odlc(odlc) self.assertIsNotNone(post_odlc.id) self.assertIsNotNone(async_post_odlc.id) self.assertEqual(interop_api_pb2.Odlc.STANDARD, post_odlc.type) self.assertEqual(interop_api_pb2.Odlc.STANDARD, async_post_odlc.type) self.assertNotEqual(post_odlc.id, async_post_odlc.id) # Get odlcs. get_odlc = self.client.get_odlc(post_odlc.id) async_get_odlc = self.async_client.get_odlc( async_post_odlc.id).result() get_odlcs = self.client.get_odlcs() async_get_odlcs = self.async_client.get_odlcs().result() self.assertEquals(post_odlc, get_odlc) self.assertEquals(async_post_odlc, async_get_odlc) self.assertIn(post_odlc, get_odlcs) self.assertIn(async_post_odlc, async_get_odlcs) # Update odlc. post_odlc.shape = interop_api_pb2.Odlc.CIRCLE async_post_odlc.shape = interop_api_pb2.Odlc.CIRCLE put_odlc = self.client.put_odlc(post_odlc.id, post_odlc) async_put_odlc = self.async_client.put_odlc(async_post_odlc.id, async_post_odlc).result() self.assertEquals(post_odlc, put_odlc) self.assertEquals(async_post_odlc, async_put_odlc) # Upload odlc image. test_image_filepath = os.path.join(os.path.dirname(__file__), "testdata/A.jpg") with open(test_image_filepath, 'rb') as f: image_data = f.read() self.client.put_odlc_image(post_odlc.id, image_data) self.async_client.put_odlc_image(async_post_odlc.id, image_data).result() # Get the odlc image. get_image = self.client.get_odlc_image(post_odlc.id) async_get_image = self.async_client.get_odlc_image( async_post_odlc.id).result() self.assertEquals(image_data, get_image) self.assertEquals(image_data, async_get_image) # Delete the odlc image. self.client.delete_odlc_image(post_odlc.id) self.async_client.delete_odlc_image(async_post_odlc.id).result() with self.assertRaises(InteropError): self.client.get_odlc_image(post_odlc.id) with self.assertRaises(InteropError): self.async_client.get_odlc_image(async_post_odlc.id).result() # Delete odlc. self.client.delete_odlc(post_odlc.id) self.async_client.delete_odlc(async_post_odlc.id).result() self.assertNotIn(post_odlc, self.client.get_odlcs()) self.assertNotIn(async_post_odlc, self.async_client.get_odlcs().result())
class TestClient(unittest.TestCase): """Test the Client class. The Client class is a very thin wrapper, so there is very little to test. """ def setUp(self): """Create a logged in Client.""" # Test rest with non-admin clients. self.client = Client(server, username, password) self.async_client = AsyncClient(server, username, password) def test_get_teams(self): """Tests getting team status.""" teams = self.client.get_teams() async_teams = self.async_client.get_teams().result() self.assertEqual(1, len(teams)) self.assertEqual(1, len(async_teams)) self.assertEqual('testuser', teams[0].team.username) self.assertEqual('testuser', async_teams[0].team.username) def test_get_mission(self): """Test getting a mission.""" mission = self.client.get_mission(1) async_mission = self.async_client.get_mission(1).result() # Check basic field info. self.assertEqual(1, mission.id) self.assertEqual(1, async_mission.id) def test_post_telemetry(self): """Test sending some telemetry.""" t = interop_api_pb2.Telemetry() t.latitude = 38 t.longitude = -76 t.altitude = 100 t.heading = 90 # Raises an exception on error. self.client.post_telemetry(t) self.async_client.post_telemetry(t).result() def test_post_bad_telemetry(self): """Test sending some (incorrect) telemetry.""" t = interop_api_pb2.Telemetry() t.latitude = 38 t.longitude = -76 t.altitude = 100 t.heading = 400 # Out of range. with self.assertRaises(InteropError): self.client.post_telemetry(t) with self.assertRaises(InteropError): self.async_client.post_telemetry(t).result() def test_odlcs(self): """Test odlc workflow.""" # Post a odlc gets an updated odlc. odlc = interop_api_pb2.Odlc() odlc.mission = 1 odlc.type = interop_api_pb2.Odlc.STANDARD post_odlc = self.client.post_odlc(odlc) async_post_odlc = self.async_client.post_odlc(odlc).result() self.assertIsNotNone(post_odlc.id) self.assertIsNotNone(async_post_odlc.id) self.assertEqual(1, post_odlc.mission) self.assertEqual(1, async_post_odlc.mission) self.assertEqual(interop_api_pb2.Odlc.STANDARD, post_odlc.type) self.assertEqual(interop_api_pb2.Odlc.STANDARD, async_post_odlc.type) self.assertNotEqual(post_odlc.id, async_post_odlc.id) # Get odlc. get_odlc = self.client.get_odlc(post_odlc.id) async_get_odlc = self.async_client.get_odlc( async_post_odlc.id).result() get_odlcs = self.client.get_odlcs() async_get_odlcs = self.async_client.get_odlcs().result() get_odlcs_mission = self.client.get_odlcs(mission=1) async_get_odlcs_mission = self.async_client.get_odlcs( mission=1).result() get_odlcs_bad_mission = self.client.get_odlcs(mission=2) async_get_odlcs_bad_mission = self.async_client.get_odlcs( mission=2).result() self.assertEquals(post_odlc, get_odlc) self.assertEquals(async_post_odlc, async_get_odlc) self.assertIn(post_odlc, get_odlcs) self.assertIn(async_post_odlc, async_get_odlcs) self.assertIn(post_odlc, get_odlcs_mission) self.assertIn(async_post_odlc, async_get_odlcs_mission) self.assertNotIn(post_odlc, get_odlcs_bad_mission) self.assertNotIn(async_post_odlc, async_get_odlcs_bad_mission) # Update odlc. post_odlc.shape = interop_api_pb2.Odlc.CIRCLE async_post_odlc.shape = interop_api_pb2.Odlc.CIRCLE put_odlc = self.client.put_odlc(post_odlc.id, post_odlc) async_put_odlc = self.async_client.put_odlc(async_post_odlc.id, async_post_odlc).result() self.assertEquals(post_odlc, put_odlc) self.assertEquals(async_post_odlc, async_put_odlc) # Upload odlc image. test_image_filepath = os.path.join(os.path.dirname(__file__), "testdata/A.jpg") with open(test_image_filepath, 'rb') as f: image_data = f.read() self.client.put_odlc_image(post_odlc.id, image_data) self.async_client.put_odlc_image(async_post_odlc.id, image_data).result() # Get the odlc image. get_image = self.client.get_odlc_image(post_odlc.id) async_get_image = self.async_client.get_odlc_image( async_post_odlc.id).result() self.assertEquals(image_data, get_image) self.assertEquals(image_data, async_get_image) # Delete the odlc image. self.client.delete_odlc_image(post_odlc.id) self.async_client.delete_odlc_image(async_post_odlc.id).result() with self.assertRaises(InteropError): self.client.get_odlc_image(post_odlc.id) with self.assertRaises(InteropError): self.async_client.get_odlc_image(async_post_odlc.id).result() # Delete odlc. self.client.delete_odlc(post_odlc.id) self.async_client.delete_odlc(async_post_odlc.id).result() self.assertNotIn(post_odlc, self.client.get_odlcs()) self.assertNotIn(async_post_odlc, self.async_client.get_odlcs().result())