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
示例#2
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
示例#3
0
def processReservation(requestJson, antennaAvailabilityList):
    processedTime = datetimeAsIso8601(dt.now())

    reservationRequest = deepcopy(requestJson)
    deniedCount = 0
    for antenna in reservationRequest['contactPlan']['antennas']:
        antennaId = antenna['id']
        for contact in antenna['contacts']:
            for antenna in antennaAvailabilityList['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
                    if denied:
                        deniedCount += 1

    return (deniedCount, reservationRequest)
    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)
示例#5
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)
示例#6
0
    def testValidateContactResponse(self):
        schema = loadSchemaFor("Contact")
        requiredList = schema['definitions']['Contact']['required']
        requiredList.append("status")
        requiredList.append("processedTime")

        processedTime = datetimeAsIso8601(dt.now())
        data = {
            "id": "SkySat-A-rev1006-Fairbanks-1",
            "satelliteName": "SkySat-1",
            "startTime": "2014-10-10T07:28:20.000Z",
            "stopTime": "2014-10-10T07:29:20.000Z",
            "status": "RESERVED",
            "processedTime": processedTime
        }
        validateWithChecker(data, schema)
    def testValidateContactResponse(self):
        schema = loadSchemaFor("Contact")
        requiredList = schema['definitions']['Contact']['required']
        requiredList.append("status")
        requiredList.append("processedTime")

        processedTime = datetimeAsIso8601(dt.now())
        data = {
            "id":"SkySat-A-rev1006-Fairbanks-1",
            "satelliteName":"SkySat-1",
            "startTime": "2014-10-10T07:28:20.000Z",
            "stopTime": "2014-10-10T07:29:20.000Z",
            "status" : "RESERVED",
            "processedTime" : processedTime
        }
        validateWithChecker(data, schema)
    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)
示例#9
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)
def processReservation(requestJson, antennaAvailabilityList):
        processedTime = datetimeAsIso8601(dt.now())

        reservationRequest = deepcopy(requestJson)
        deniedCount = 0
        for antenna in reservationRequest['contactPlan']['antennas']:
            antennaId =  antenna['id']
            for contact in antenna['contacts']:
                for antenna in antennaAvailabilityList['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
                        if denied:
                            deniedCount +=1

        return (deniedCount, reservationRequest)
 def testDatetimeFromIso8601(self):
     startDate = dt(2015, 10, 13, 13, 10, 0)
     isoString = datetimeAsIso8601(startDate)
     convertedDate = iso8601AsDatetime(isoString)
     self.assertEqual(startDate, convertedDate)
 def testNow(self):
     isoString = datetimeAsIso8601(dt.now())
     print isoString
示例#13
0
 def testDatetimeFromIso8601(self):
     startDate = dt(2015, 10, 13, 13, 10, 0)
     isoString = datetimeAsIso8601(startDate)
     convertedDate = iso8601AsDatetime(isoString)
     self.assertEqual(startDate, convertedDate)
示例#14
0
 def testNow(self):
     isoString = datetimeAsIso8601(dt.now())
     print isoString