def testDeconflictReservation(self): processedTime = datetimeAsIso8601(dt.now()) reservationRequest = reservationRequestWithConflicts() availabilityList = antennaAvailability() for antenna in reservationRequest['contactPlan']['antennas']: antennaId = antenna['id'] for contact in antenna['contacts']: for antenna in availabilityList['antennas']: if antenna['antennaId'] == antennaId: denied = False for window in antenna['outOfServiceWindows']: overlap = doWindowsOverlap(contact['startTime'], contact['stopTime'], window['startTime'], window['stopTime']) denied = denied or overlap contact['status'] = ('DENIED_OUT_OF_SERVICE' if denied else 'RESERVED') contact['processedTime'] = processedTime expectedStatusList = { 'SkySat-A-rev1006-Fairbanks-1': 'DENIED_OUT_OF_SERVICE', 'SkySat-B-rev2209-Fairbanks-1': 'RESERVED', 'SkySat-A-rev1006-Fairbanks-2': 'RESERVED', 'SkySat-B-rev2209-Fairbanks-2': 'DENIED_OUT_OF_SERVICE', } for antenna in reservationRequest['contactPlan']['antennas']: for contact in antenna['contacts']: # print "'%s\' : '%s'" % (contact['id'], contact['status']) self.assertEqual(contact['status'], expectedStatusList[contact['id']]) pass
def testDeconflictReservation(self): processedTime = datetimeAsIso8601(dt.now()) reservationRequest = reservationRequestWithConflicts() availabilityList = antennaAvailability() for antenna in reservationRequest['contactPlan']['antennas']: antennaId = antenna['id'] for contact in antenna['contacts']: for antenna in availabilityList['antennas']: if antenna['antennaId'] == antennaId : denied = False for window in antenna['outOfServiceWindows']: overlap = doWindowsOverlap(contact['startTime'], contact['stopTime'], window['startTime'], window['stopTime']) denied = denied or overlap contact['status'] = ('DENIED_OUT_OF_SERVICE' if denied else 'RESERVED') contact['processedTime'] = processedTime expectedStatusList = { 'SkySat-A-rev1006-Fairbanks-1' : 'DENIED_OUT_OF_SERVICE', 'SkySat-B-rev2209-Fairbanks-1' : 'RESERVED', 'SkySat-A-rev1006-Fairbanks-2' : 'RESERVED', 'SkySat-B-rev2209-Fairbanks-2' : 'DENIED_OUT_OF_SERVICE', } for antenna in reservationRequest['contactPlan']['antennas']: for contact in antenna['contacts']: # print "'%s\' : '%s'" % (contact['id'], contact['status']) self.assertEqual(contact['status'], expectedStatusList[contact['id']]) pass
def testPostAntennaAvailability(self): from datetime import datetime as dt from TimeUtils import datetimeAsIso8601 data = antennaAvailability() data['generationDate'] = datetimeAsIso8601(dt.now()) requestHandler = RequestHandler() response = requestHandler.postAntennaAvailability(data) self.assertEqual(201, response.status)
def testReservationWorkflow(self): # - Set Antenna Availabilty: this is testing step only from datetime import datetime as dt from TimeUtils import datetimeAsIso8601 data = antennaAvailability() data['generationDate'] = datetimeAsIso8601(dt.now()) requestHandler = RequestHandler() response = requestHandler.postAntennaAvailability(data) self.assertEqual(201, response.status) startDate = '2015-10-16T10:00:00Z' endDate = '2015-10-17T10:00:00Z' response = requestHandler.getAntennaAvailability(startDate, endDate) self.assertEqual(200, response.status) self.assertEqual('OK', response.reason) # - Get Antenna Availabilty: this begins every reservation cycle startDate = '2015-10-16T10:00:00Z' endDate = '2015-10-17T10:00:00Z' response = requestHandler.getAntennaAvailability(startDate, endDate) # TODO capture generation date from availability report self.assertEqual(200, response.status) self.assertEqual('OK', response.reason) responseSchema = loadAntennaAvailabilitySchema() validateWithChecker(response.body, responseSchema) # - Update (POST) reservations. data = reservationRequest() # TODO consider: do we inject the date form our antenna avail report at this point? Or let service do that # TODO update generation date in reservation request before posting requestHandler = RequestHandler() response = requestHandler.postReservations(data) self.assertEqual(201, response.status) self.assertEqual('Created', response.reason) # TODO assert expected generation date in response responseSchema = loadReservationResponseSchema() validateWithChecker(response.body, responseSchema)
def reservationResponse(): requestJson = reservationRequest() (deniedCount, response) = processReservation(requestJson, antennaAvailability()) return response