def test_pending_request_queue():
    missing_resource_1 = mr.MissingLinkCapacity(1)
    supplied_resource_1 = sr.SuppliedLinkCapacity(1)

    missing_resource_2 = mr.MissingFlowData([support.Range(1, 3, 1)])
    supplied_resource_2_1 = sr.SuppliedFlowData(support.Range(3, 5, 1))
    supplied_resource_2_2 = sr.SuppliedFlowData(support.Range(1, 3, 1))

    pending_request_queue = pending_requests.PendingRequestQueue()
    pending_request_queue.add_pending_request(
        None, "req_msg1", [missing_resource_1, missing_resource_2])
    pending_request_queue.add_pending_request(None, "req_msg2",
                                              [missing_resource_1])

    #Not empty
    run_tests.compare_answer(
        pending_request_queue.get_ready_to_be_handled_requests(), [],
        "Check to see if no requests initially are ready")
    run_tests.compare_answer(
        len(pending_request_queue.pending_requests), 2,
        "Check to see if both requests are still there initially")

    #Supply 1
    pending_request_queue.process_supplied_resource(supplied_resource_1)
    requests = pending_request_queue.get_ready_to_be_handled_requests()
    run_tests.compare_answer(
        len(requests), 1,
        "Check to see one request is ready after first supply")
    run_tests.compare_answer(requests[0].request_message, "req_msg2",
                             "Check to see if correct message is ready req1")
    run_tests.compare_answer(
        len(pending_request_queue.pending_requests), 1,
        "Check to see if last request is still there after first supply")

    #Supply 2_1
    pending_request_queue.process_supplied_resource(supplied_resource_2_1)
    requests = pending_request_queue.get_ready_to_be_handled_requests()
    run_tests.compare_answer(
        len(requests), 0,
        "Check to see if zero requests are ready after second supply")
    run_tests.compare_answer(
        len(pending_request_queue.pending_requests), 1,
        "Check to see if last request is still there after second supply")

    #Supply 2_2
    pending_request_queue.process_supplied_resource(supplied_resource_2_2)
    requests = pending_request_queue.get_ready_to_be_handled_requests()
    run_tests.compare_answer(
        len(requests), 1,
        "Check to see one request is ready after third supply")
    run_tests.compare_answer(requests[0].request_message, "req_msg1",
                             "Check to see if correct message is ready req2")
    run_tests.compare_answer(
        len(pending_request_queue.pending_requests), 0,
        "Check to see if no request is still there after third supply")
Example #2
0
def test_reduce_to_missing_ranges():
    l1 = [1, 2, 10, 40, 41, 50]
    answer1 = [support.Range(3, 9, 1), support.Range(11, 39, 1), support.Range(42, 49, 1)]
    result1 = support.reduce_to_missing_ranges(l1, lambda x: x, 1, 1, 50)
    run_tests.compare_answer(result1, answer1, "missing_support.Ranges 1")

    #Difficult one because one value is outside of the (start value, end value) support.Range while the resolution allows it
    l2 = [9, 11]
    answer2 = [support.Range(1, 6, 3), support.Range(10, 10, 3)]
    result2 = support.reduce_to_missing_ranges(l2, lambda x: x, 3, 1, 10)
    run_tests.compare_answer(result2, answer2, "missing_ranges 2")
Example #3
0
    def from_maas_user_info_message_to_supplied_info(msg):
        supplied_resource = None

        if msg.time_span > 0:
            start_date_time = datetime.datetime.combine(msg.start_date, msg.start_time)
            end_date_time = start_date_time + datetime.timedelta(seconds=msg.time_span)

            supplied_range = support.Range(start_date_time, end_date_time, support.Range.RESOLUTION_DATETIME_MINUTE)
            supplied_resource = SuppliedUserInfo(supplied_range)

        return supplied_resource
def test_pending_request():
    missing_resource_1 = mr.MissingLinkCapacity(1)
    supplied_resource_1 = sr.SuppliedLinkCapacity(1)

    missing_resource_2 = mr.MissingFlowData([support.Range(1, 3, 1)])
    supplied_resource_2_1 = sr.SuppliedFlowData(support.Range(3, 5, 1))
    supplied_resource_2_2 = sr.SuppliedFlowData(support.Range(1, 3, 1))

    pending_request = pending_requests.PendingRequest(
        None, "req_msg", [missing_resource_1, missing_resource_2])

    #Not empty
    run_tests.compare_answer(pending_request.ready_to_be_handled(), False,
                             "Check if request not be handled after filled")
    run_tests.compare_answer(len(pending_request.missing_resources.items()), 2,
                             "Check to see if both are added")

    #Supply 1
    pending_request.process_supplied_resource(supplied_resource_1)

    run_tests.compare_answer(
        pending_request.ready_to_be_handled(), False,
        "Check if request not be handled after first supply")
    run_tests.compare_answer(len(pending_request.missing_resources.items()), 1,
                             "Check to see if one still exists")

    #Supply 2_1
    pending_request.process_supplied_resource(supplied_resource_2_1)
    run_tests.compare_answer(
        pending_request.ready_to_be_handled(), False,
        "Check if request not be handled after second supply")
    run_tests.compare_answer(len(pending_request.missing_resources.items()), 1,
                             "Check to see if one still exists")

    #Supply 2_2
    pending_request.process_supplied_resource(supplied_resource_2_2)
    run_tests.compare_answer(pending_request.ready_to_be_handled(), True,
                             "Check if request be handled after third supply")
    run_tests.compare_answer(len(pending_request.missing_resources.items()), 0,
                             "Check to see if none still exist")
Example #5
0
def test_missing_flow_data():
    missing_ranges = [support.Range(1, 5, 1), support.Range(8, 10, 1)]
    missing_resource = mr.MissingFlowData(missing_ranges)

    supplied_range1 = support.Range(3, 5, 1)
    supplied_range2 = support.Range(6, 9, 1)
    supplied_resource1 = sr.SuppliedFlowData(supplied_range1)
    supplied_resource2 = sr.SuppliedFlowData(supplied_range2)

    #Not empty
    run_tests.compare_answer(missing_resource.is_not_missing_anything(), False,
                             "Test empty after filled")

    #Applied first
    missing_resource.update_missing_from_supplied_info(supplied_resource1)
    now_missing_ranges1 = missing_resource.missing

    run_tests.compare_answer(now_missing_ranges1,
                             [support.Range(1, 2, 1),
                              support.Range(8, 10, 1)],
                             "Test missing after first supplied")

    #Applied second
    missing_resource.update_missing_from_supplied_info(supplied_resource2)
    now_missing_ranges2 = missing_resource.missing
    run_tests.compare_answer(
        now_missing_ranges2,
        [support.Range(1, 2, 1),
         support.Range(10, 10, 1)], "Test missing after second supplied")

    #Dismiss all and test empty
    supplied_range_dismiss = support.Range(1, 10, 1)
    supplied_resource_dismiss = sr.SuppliedFlowData(supplied_range_dismiss)
    missing_resource.update_missing_from_supplied_info(
        supplied_resource_dismiss)

    now_missing_ranges_dismiss = missing_resource.missing

    run_tests.compare_answer(now_missing_ranges_dismiss, [],
                             "Test if missing list is now empty")
    run_tests.compare_answer(
        missing_resource.is_not_missing_anything(), True,
        "Test to see if missing resource is not missing anything")
def check_user_mobility_data_single_user_integrity(
        grouped_by_date_grid_by_minute_of_day_mp_fetched, current_date):
    missing_ranges_date_time_date_time = []

    current_unix_days = support.date_to_unix_days_timestamp(current_date)
    history_unix_days = current_unix_days - config.MP_USE_DATA_FROM_LAST_DAYS
    current_unix_week = int(current_unix_days / common_config.DAYS_IN_A_WEEK)
    history_unix_week = int(history_unix_days / common_config.DAYS_IN_A_WEEK)

    #Find missing weeks
    all_weeks = map(lambda x: support.date_to_unix_weeks_timestamp(x),
                    grouped_by_date_grid_by_minute_of_day_mp_fetched.keys())

    missing_ranges_unix_weeks = support.reduce_to_missing_ranges(
        all_weeks, lambda i: i, 1, history_unix_week, current_unix_week)

    missing_ranges_date = map(
        lambda x: support.Range(
            support.unix_weeks_timestamp_to_date_range(x.min_range).min_range,
            support.unix_weeks_timestamp_to_date_range(x.max_range).max_range,
            support.Range.RESOLUTION_DATETIME_DAY), missing_ranges_unix_weeks)

    #Add the missing days
    begin_of_day_time = datetime.time(0, 0, 0)
    end_of_day_time = datetime.time(23, 59, 59)
    for missing_range_date in missing_ranges_date:
        start_date_time = datetime.datetime.combine(
            missing_range_date.min_range, begin_of_day_time)
        end_date_time = datetime.datetime.combine(missing_range_date.max_range,
                                                  end_of_day_time)

        missing_ranges_date_time_date_time.append(
            support.Range(start_date_time, end_date_time,
                          support.Range.RESOLUTION_DATETIME_MINUTE))

    #Calculate the missing time ranges in each day that already exists
    for date, grid_by_minute_of_day_mp_fetched in grouped_by_date_grid_by_minute_of_day_mp_fetched.items(
    ):
        missing_ranges_in_minutes = support.reduce_to_missing_ranges_already_grid(
            grid_by_minute_of_day_mp_fetched, 1, 0,
            common_config.MINUTES_IN_A_DAY - 1)

        missing_ranges_in_time = map(
            lambda missing_range: support.Range(
                support.calc_time_from_minute_of_day(missing_range.min_range),
                support.calc_time_from_minute_of_day(missing_range.max_range),
                support.Range.RESOLUTION_DATETIME_SECOND),
            missing_ranges_in_minutes)

        #Add the missing times for a certain day
        for missing_range_in_time in missing_ranges_in_time:
            start_date_time = datetime.datetime.combine(
                date, missing_range_in_time.min_range)
            end_date_time = datetime.datetime.combine(
                date, missing_range_in_time.max_range)

            missing_ranges_date_time_date_time.append(
                support.Range(start_date_time, end_date_time,
                              support.Range.RESOLUTION_DATETIME_MINUTE))

    return missing_ranges_date_time_date_time
Example #7
0
    def from_bp_fetched_list_to_supplied_info(bp_fetched):
        times = map(lambda x: x.time, bp_fetched)
        min_time = min(*times)
        max_time = max(*times)

        return SuppliedFlowData(support.Range(min_time, max_time, 1))
Example #8
0
def test_ranges_other_overlaps_right_border():
    #Same range
    run_tests.compare_answer(support.Range(1,3,1).other_overlaps_right_border(support.Range(1,3,1)), False, "Test ranges other overlaps right border (1,3) and (1,3)")
    
    #Right border overlap
    run_tests.compare_answer(support.Range(1,3,1).other_overlaps_right_border(support.Range(2,4,1)), True, "Test ranges other overlaps right border (1,3) and (2,4)")
    
    #Left border overlap
    run_tests.compare_answer(support.Range(3,5,1).other_overlaps_right_border(support.Range(1,4,1)), False, "Test ranges other overlaps right border (3,5) and (1,4)")
    
    #No overlap
    run_tests.compare_answer(support.Range(1,3,1).other_overlaps_right_border(support.Range(4,6,1)), False, "Test ranges other overlaps right border (1,3) and (4,6)")
    
    #Falls in
    run_tests.compare_answer(support.Range(2,6,1).other_overlaps_right_border(support.Range(3,4,1)), False, "Test ranges other overlaps right border (2,6) and (3,4)")
    
    #Complete overlap
    run_tests.compare_answer(support.Range(3,4,1).other_overlaps_right_border(support.Range(2,6,1)), False, "Test ranges other overlaps right border (2,6) and (3,4)")
Example #9
0
def test_ranges_has_overlap():
    #Same ranges
    run_tests.compare_answer(support.Range(1,3,1).has_overlap(support.Range(1,3,1)), True, "Test ranges has overlap (1,3) and (1,3)")
    
    #Right border overlap
    run_tests.compare_answer(support.Range(1,3,1).has_overlap(support.Range(2,4,1)), True, "Test ranges has overlap (1,3) and (2,4)")
    run_tests.compare_answer(support.Range(1,2,1).has_overlap(support.Range(2,4,1)), True, "Test ranges has overlap (1,2) and (2,4)")
    
    #Left border overlap
    run_tests.compare_answer(support.Range(3,5,1).has_overlap(support.Range(1,4,1)), True, "Test ranges has overlap (3,5) and (1,4)")
    run_tests.compare_answer(support.Range(3,5,1).has_overlap(support.Range(1,3,1)), True, "Test ranges has overlap (3,5) and (1,3)")
    
    #Complete overlap
    run_tests.compare_answer(support.Range(3,5,1).has_overlap(support.Range(2,6,1)), True, "Test ranges has overlap (3,5) and (2,6)")
    run_tests.compare_answer(support.Range(3,5,1).has_overlap(support.Range(3,5,1)), True, "Test ranges has overlap (3,5) and (3,5)")
    
    #Falls in
    run_tests.compare_answer(support.Range(2,6,1).has_overlap(support.Range(3,4,1)), True, "Test ranges has overlap (2,6) and (3,4)")
    
    #No overlap
    run_tests.compare_answer(support.Range(1,3,1).has_overlap(support.Range(4,6,1)), False, "Test ranges has overlap (1,3) and (4,6)")
    run_tests.compare_answer(support.Range(4,6,1).has_overlap(support.Range(1,3,1)), False, "Test ranges has overlap (4,6) and (1,3)")
Example #10
0
def test_ranges_sub():
    #Same ranges
    run_tests.compare_answer(support.Range(1,3,1) - support.Range(1,3,1), [], "Test ranges sub (1,3) - (1,3)")
    
    #Right border overlap
    run_tests.compare_answer(support.Range(1,3,1) - support.Range(2,4,1), [support.Range(1,1,1)], "Test ranges sub (1,3) - (2,4)")
    run_tests.compare_answer(support.Range(1,2,1) - support.Range(2,4,1), [support.Range(1,1,1)], "Test ranges sub (1,2) - (2,4)")
    
    #Left border overlap
    run_tests.compare_answer(support.Range(3,5,1) - support.Range(1,4,1), [support.Range(5,5,1)], "Test ranges sub (3,5) - (1,4)")
    run_tests.compare_answer(support.Range(3,5,1) - support.Range(1,3,1), [support.Range(4,5,1)], "Test ranges sub (3,5) - (1,3)")
    
    #Complete overlap
    run_tests.compare_answer(support.Range(3,5,1) - support.Range(2,6,1), [], "Test ranges sub (3,5) - (2,6)")
    run_tests.compare_answer(support.Range(3,5,1) - support.Range(3,5,1), [], "Test ranges sub (3,5) - (3,5)")
    
    #Falls in
    run_tests.compare_answer(support.Range(2,6,1) - support.Range(3,4,1), [support.Range(2,2,1), support.Range(5,6,1)], "Test ranges sub (2,6) - (3,4)")

    #Falls in but on a border so actually a border overlap
    run_tests.compare_answer(support.Range(2,6,1) - support.Range(4,6,1), [support.Range(2,3,1)], "Test ranges sub (2,6) - (4,6)")
    run_tests.compare_answer(support.Range(2,6,1) - support.Range(2,3,1), [support.Range(4,6,1)], "Test ranges sub (2,6) - (2,3)")
Example #11
0
def test_ranges_add():
    run_tests.compare_answer(support.Range(1,2,1) + support.Range(2,3,1), [support.Range(1,3,1)], "Testing ranges add (1,2) and (2,3)")
    run_tests.compare_answer(support.Range(1,2,1) + support.Range(3,4,1), [support.Range(1,2,1), support.Range(3,4,1)], "Testing ranges add (1,2) and (3,4)")
    run_tests.compare_answer(support.Range(2,3,1) + support.Range(1,2,1), [support.Range(1,3,1)], "Testing ranges add (2,3) and (1,2)")
    run_tests.compare_answer(support.Range(1,2,1) + support.Range(1,2,1), [support.Range(1,2,1)], "Testing ranges add (1,2) and (1,2)")