Example #1
0
    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)
Example #4
0
    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)
Example #6
0
    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)
Example #7
0
def reservationResponse():
    requestJson = reservationRequest()
    (deniedCount, response) = processReservation(requestJson,
                                                 antennaAvailability())
    return response
def reservationResponse():
    requestJson = reservationRequest()
    (deniedCount, response) = processReservation(requestJson, antennaAvailability())
    return response