Commit f4d3f287 authored by Panagiotis Pavlidis's avatar Panagiotis Pavlidis
Browse files

Implement TF logic and test cases

parent 90e293d9
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -258,10 +258,10 @@ class NetworkManagementInterface(ABC):
            raise NetworkPlatformError("Location information not found in monitoring event report")
        geo_area = monitoring_event_report.locationInfo.geographicArea
        report_event_time = monitoring_event_report.eventTime
        ageOfLocationInfo = None
        age_of_location_info = None
        if monitoring_event_report.locationInfo.ageOfLocationInfo is not None:    
            ageOfLocationInfo = monitoring_event_report.locationInfo.ageOfLocationInfo.duration
        last_location_time = self._compute_camara_last_location_time(report_event_time,ageOfLocationInfo)
            age_of_location_info = monitoring_event_report.locationInfo.ageOfLocationInfo.duration
        last_location_time = self._compute_camara_last_location_time(report_event_time,age_of_location_info)
            
        camara_polygon = schemas.Polygon(areaType=schemas.AreaType.polygon,boundary=geo_area.polygon.point_list)
        camara_loc_area = schemas.Area.model_validate(camara_polygon)
+2 −2
Original line number Diff line number Diff line
@@ -247,11 +247,11 @@ class GeographicalCoordinates(BaseModel):
    lon: float = Field(..., description="Longitude coordinate.")
    lat: float = Field(..., description="Latitude coordinate.")

class PointList(BaseModel):
class PointListNef(BaseModel):
    geographical_coords: list[GeographicalCoordinates] = Field(..., description="List of geographical coordinates defining the points.",min_length=3,max_length=15)

class NefPolygon(BaseModel):
    point_list: PointList = Field(..., description="List of points defining the polygon.")
    point_list: PointListNef = Field(..., description="List of points defining the polygon.")

class GeographicArea(BaseModel):
    polygon: NefPolygon | None = Field(None, description="Identifies a polygonal geographic area.")
+44 −3
Original line number Diff line number Diff line
import pytest
import datetime

from sunrise6g_opensdk.common.sdk import Sdk as sdkclient
from sunrise6g_opensdk.network.core.schemas import RetrievalLocationRequest, Device, MonitoringEventSubscriptionRequest
from sunrise6g_opensdk.network.core.schemas import RetrievalLocationRequest, Device, MonitoringEventSubscriptionRequest, Location, AreaType, PointList, Point,Polygon



@@ -48,7 +49,7 @@ def camara_payload_input_data() -> RetrievalLocationRequest:
#   "monitoringType": "LOCATION_REPORTING",
#   "locationType": "CURRENT_LOCATION"
# }
@pytest.fixture(scope="module", name="expected_output_data")
@pytest.fixture(scope="module", name="expected_3gpp_output_data")
def monitoring_request_3gpp_payload_output_data(camara_payload_input_data: RetrievalLocationRequest) -> MonitoringEventSubscriptionRequest:
    """
    Fixture to provide output data for 3GPP monitoring event request payload.
@@ -60,3 +61,43 @@ def monitoring_request_3gpp_payload_output_data(camara_payload_input_data: Retri
        monitoringType="LOCATION_REPORTING",
        locationType="LAST_KNOWN_LOCATION"
    )


@pytest.fixture(scope="module", name="expected_camara_output_data")
def monitoring_request_camara_payload_output_data(camara_payload_input_data: RetrievalLocationRequest) -> Location:
    """
    Fixture to provide output data for 3GPP monitoring event request payload.

    Example:

    {
        "lastLocationTime": "2023-10-27T15:30:00Z",
        "area": {
            "areaType": "POLYGON",
            "boundary": [
            {
                "latitude": 34.0522,
                "longitude": -118.2437
            },
            {
                "latitude": 34.0535,
                "longitude": -118.2500
            },
            {
                "latitude": 34.0480,
                "longitude": -118.2520
            }
            ]
        }
    }
    """
    point1 = Point(latitude=34.0522, longitude=-118.2437)
    point2 = Point(latitude=34.0535, longitude=-118.2500)
    point3 = Point(latitude=34.0480, longitude=-118.2520)

    point_list = PointList(root=[point1, point2, point3])
    
    polygon_area = Polygon(areaType=AreaType.polygon,boundary=point_list)

    location = Location(lastLocationTime="2023-10-27T15:30:00Z",area=polygon_area)
    return location
+10 −6
Original line number Diff line number Diff line
@@ -5,15 +5,19 @@ import pytest
from sunrise6g_opensdk.common.sdk import Sdk as sdkclient
from sunrise6g_opensdk.network.core.common import CoreHttpError
from sunrise6g_opensdk.network.core.network_interface import NetworkManagementInterface
from sunrise6g_opensdk.network.core.schemas import RetrievalLocationRequest
from sunrise6g_opensdk.network.core.schemas import RetrievalLocationRequest, MonitoringEventSubscriptionRequest, Location


from tests.network.conftest import instantiate_network_client, camara_payload_input_data


def test_camara_tf_3gpp_event(network_client : NetworkManagementInterface ,camara_payload_input_data: RetrievalLocationRequest, expected_output_data) -> None:
def test_camara_tf_3gpp_event(network_client : NetworkManagementInterface ,camara_payload_input_data: RetrievalLocationRequest, expected_3gpp_output_data: MonitoringEventSubscriptionRequest) -> None:
    actual_result = network_client._build_monitoring_event_subscription(retrieve_location_request=camara_payload_input_data)
    assert actual_result == expected_output_data


# def test_create_monitoring_event():
 No newline at end of file
    assert actual_result == expected_3gpp_output_data, f"Expected actual_result ({actual_result}) \n to be equal to expected_result ({expected_3gpp_output_data}), but they were not."
   
def test_create_monitoring_event(network_client : NetworkManagementInterface, camara_payload_input_data: RetrievalLocationRequest,expected_camara_output_data: Location ):
    try:
        actual_result = network_client.create_monitoring_event_subscription(retrieve_location_request=camara_payload_input_data)
        assert actual_result == expected_camara_output_data
    except CoreHttpError as e:
        pytest.fail(f"Failed to retrieve event report: {e}")
 No newline at end of file