public void TrainBaselineStatusScenario_WhenConnectionIsEstablishedWithT2G_UnknownTrainsAreRemoved() { TrainBaselineStatusData expectedValueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(expectedValueTrain1.TrainId, expectedValueTrain1); // Initialize the history log database UpdateHistoryLog(expectedValueTrain1); UpdateHistoryLog(new TrainBaselineStatusData("TRAIN-2", 2, false, "5.4.3.3")); UpdateHistoryLog(new TrainBaselineStatusData("TRAIN-0", 0, false, "1.0.0.0")); // Initialize services CreateT2GServicesStub(); _hostIdentificationService.Close(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, false); InitializeDataPackageService(false); InitializePISGroundSession(); ReopenIdentificationService(); WaitPisGroundIsConnectedWithT2G(true); // Wait that history log was updated. WaitTrainBaselineStatusesEquals(expectedStatuses, "When PIS-Ground establish a connection with T2G, unknown train by T2G are not removed from the train baseline status database."); }
public void TrainBaselineStatusScenario_OnStartupAllTrainAreOffline() { TrainBaselineStatusData valueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, false, DEFAULT_BASELINE); TrainBaselineStatusData valueTrain2 = new TrainBaselineStatusData("TRAIN-2", 2, false, "5.4.3.3"); TrainBaselineStatusData valueTrain3 = new TrainBaselineStatusData("TRAIN-0", 0, false, "1.0.0.0"); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(valueTrain1.TrainId, valueTrain1.Clone()); expectedStatuses.Add(valueTrain2.TrainId, valueTrain2.Clone()); expectedStatuses.Add(valueTrain3.TrainId, valueTrain3.Clone()); // Initialize the history log database valueTrain1.OnlineStatus = true; valueTrain3.OnlineStatus = true; UpdateHistoryLog(valueTrain1); UpdateHistoryLog(valueTrain2); UpdateHistoryLog(valueTrain3); valueTrain1.OnlineStatus = false; valueTrain3.OnlineStatus = false; // Initialize services _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeDataPackageService(false); InitializePISGroundSession(); // Wait that history log was updated. WaitTrainBaselineStatusesEquals(expectedStatuses, "On startup of PIS-Ground, train baselines status are not set to state offline"); }
public void TrainBaselineStatusScenario_OnSystemChangedNotificationUpdateTrainNumber() { TrainBaselineStatusData valueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain2 = new TrainBaselineStatusData(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, false, "5.4.3.3", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain3 = new TrainBaselineStatusData(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, "1.0.0.0", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(valueTrain1.TrainId, valueTrain1.Clone()); expectedStatuses.Add(valueTrain2.TrainId, valueTrain2.Clone()); expectedStatuses.Add(valueTrain3.TrainId, valueTrain3.Clone()); // Initialize the history log database valueTrain1.OnlineStatus = false; valueTrain3.OnlineStatus = true; UpdateHistoryLog(valueTrain1); UpdateHistoryLog(valueTrain2); UpdateHistoryLog(valueTrain3); valueTrain1.OnlineStatus = true; valueTrain3.OnlineStatus = false; // Initialize services CreateT2GServicesStub(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, true); InitializeTrain(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, false, TRAIN_IP_2, TRAIN_DATA_PACKAGE_PORT_2, commLinkEnum._2G3G, false, "5.4.3.3"); InitializeTrain(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, TRAIN_IP_0, TRAIN_DATA_PACKAGE_PORT_0, commLinkEnum.wifi, false, "1.0.0.0"); InitializeDataPackageService(false); InitializePISGroundSession(); // Wait that history log was on expected status. WaitTrainBaselineStatusesEquals(expectedStatuses, "Online statuses of train not updated in train baseline status when PIS-Ground connect with T2G"); // TRAIN-1 become train number 100 valueTrain1.TrainNumber = "100"; expectedStatuses[valueTrain1.TrainId] = valueTrain1.Clone(); expectedStatuses[valueTrain2.TrainId] = valueTrain2.Clone(); expectedStatuses[valueTrain3.TrainId] = valueTrain3.Clone(); _identificationServiceStub.UpdateSystem(valueTrain1.TrainId, Convert.ToInt32(valueTrain1.TrainNumber, CultureInfo.InvariantCulture), valueTrain1.OnlineStatus, 0, DEFAULT_MISSION, commLinkEnum.wifi, TRAIN_IP_1); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemChanged does not update the train number field in train baseline statuses database."); // TRAIN-2 become train number 200 // TRAIN-1 become train number 1000 valueTrain1.TrainNumber = "1000"; valueTrain2.TrainNumber = "200"; expectedStatuses[valueTrain1.TrainId] = valueTrain1.Clone(); expectedStatuses[valueTrain2.TrainId] = valueTrain2.Clone(); expectedStatuses[valueTrain3.TrainId] = valueTrain3.Clone(); _identificationServiceStub.UpdateSystem(valueTrain1.TrainId, Convert.ToInt32(valueTrain1.TrainNumber, CultureInfo.InvariantCulture), valueTrain1.OnlineStatus, 0, DEFAULT_MISSION, commLinkEnum.wifi, TRAIN_IP_1); _identificationServiceStub.UpdateSystem(valueTrain2.TrainId, Convert.ToInt32(valueTrain2.TrainNumber, CultureInfo.InvariantCulture), valueTrain2.OnlineStatus, 0, DEFAULT_MISSION, commLinkEnum.wifi, TRAIN_IP_2); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemChanged does not update the train number field in train baseline statuses database."); }
public void TrainBaselineStatusScenario_OnSystemDeletedNotificationNominal() { TrainBaselineStatusData valueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain2 = new TrainBaselineStatusData(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, "5.4.3.3", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain3 = new TrainBaselineStatusData(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, "1.0.0.0", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(valueTrain1.TrainId, valueTrain1.Clone()); expectedStatuses.Add(valueTrain2.TrainId, valueTrain2.Clone()); expectedStatuses.Add(valueTrain3.TrainId, valueTrain3.Clone()); // Initialize the history log database valueTrain1.OnlineStatus = false; valueTrain3.OnlineStatus = true; UpdateHistoryLog(valueTrain1); UpdateHistoryLog(valueTrain2); UpdateHistoryLog(valueTrain3); valueTrain1.OnlineStatus = true; valueTrain3.OnlineStatus = false; // Initialize services CreateT2GServicesStub(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, true); InitializeTrain(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, TRAIN_IP_2, TRAIN_DATA_PACKAGE_PORT_2, commLinkEnum._2G3G, false, "5.4.3.3"); InitializeTrain(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, TRAIN_IP_0, TRAIN_DATA_PACKAGE_PORT_0, commLinkEnum.wifi, false, "1.0.0.0"); InitializeDataPackageService(false); InitializePISGroundSession(); // Wait that history log was on expected status. WaitTrainBaselineStatusesEquals(expectedStatuses, "Online statuses of train not updated in train baseline status when PIS-Ground connect with T2G"); // Remove TRAIN-0 expectedStatuses.Remove(valueTrain3.TrainId); _identificationServiceStub.DeleteSystem(valueTrain3.TrainId); WaitNotificationSend(NotificationIdEnum.DeletedElement, valueTrain3.TrainId); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemDeleted does not remove the deleted train in train baseline statuses database."); // Delete TRAIN-2 expectedStatuses.Remove(valueTrain2.TrainId); _identificationServiceStub.DeleteSystem(valueTrain2.TrainId); WaitNotificationSend(NotificationIdEnum.DeletedElement, valueTrain2.TrainId); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemDeleted does not remove the deleted train in train baseline statuses database."); // Delete TRAIN-1 expectedStatuses.Remove(valueTrain1.TrainId); _identificationServiceStub.DeleteSystem(valueTrain1.TrainId); WaitNotificationSend(NotificationIdEnum.DeletedElement, valueTrain1.TrainId); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemDeleted does not remove the deleted train in train baseline statuses database."); }
public void TrainBaselineStatusScenario_OnMessageChangedUpdateThePisSoftwareVersion() { TrainBaselineStatusData valueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain2 = new TrainBaselineStatusData(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, "5.4.3.3", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain3 = new TrainBaselineStatusData(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, "1.0.0.0", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(valueTrain1.TrainId, valueTrain1.Clone()); expectedStatuses.Add(valueTrain2.TrainId, valueTrain2.Clone()); expectedStatuses.Add(valueTrain3.TrainId, valueTrain3.Clone()); // Initialize services CreateT2GServicesStub(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, true); InitializeTrain(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, TRAIN_IP_0, TRAIN_DATA_PACKAGE_PORT_0, commLinkEnum.wifi, false, "1.0.0.0"); InitializeTrain(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, TRAIN_IP_2, TRAIN_DATA_PACKAGE_PORT_2, commLinkEnum._2G3G, false, "5.4.3.3"); InitializeDataPackageService(false); InitializePISGroundSession(); // Wait that history log was on expected status. WaitTrainBaselineStatusesEquals(expectedStatuses, "Online statuses of train not updated in train baseline status when PIS-Ground connect with T2G"); // Update pis.version message of TRAIN-0 valueTrain3.PisOnBoardVersion = "5.16.3.2"; expectedStatuses[valueTrain1.TrainId] = valueTrain1.Clone(); expectedStatuses[valueTrain2.TrainId] = valueTrain2.Clone(); expectedStatuses[valueTrain3.TrainId] = valueTrain3.Clone(); _vehicleInfoServiceStub.UpdateMessageData(new VersionMessage(valueTrain3.TrainId, valueTrain3.PisOnBoardVersion)); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnMessageChanged does not update the pis onboard software version in train baseline statuses database."); // Update pis.version message of TRAIN-1 valueTrain1.PisOnBoardVersion = "5.18.0.0"; expectedStatuses[valueTrain1.TrainId] = valueTrain1.Clone(); expectedStatuses[valueTrain2.TrainId] = valueTrain2.Clone(); expectedStatuses[valueTrain3.TrainId] = valueTrain3.Clone(); _vehicleInfoServiceStub.UpdateMessageData(new VersionMessage(valueTrain1.TrainId, valueTrain1.PisOnBoardVersion)); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnMessageChanged does not update the pis onboard software version in train baseline statuses database."); // Update pis.version message of TRAIN-2 valueTrain2.PisOnBoardVersion = "5.20.0.0"; expectedStatuses[valueTrain1.TrainId] = valueTrain1.Clone(); expectedStatuses[valueTrain2.TrainId] = valueTrain2.Clone(); expectedStatuses[valueTrain3.TrainId] = valueTrain3.Clone(); _vehicleInfoServiceStub.UpdateMessageData(new VersionMessage(valueTrain2.TrainId, valueTrain2.PisOnBoardVersion)); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnMessageChanged does not update the pis onboard software version in train baseline statuses database."); }
/// <summary>Compares the content of two TrainBaselineStatusExtendedData objects.</summary> /// <param name="object1">First object to be compared.</param> /// <param name="object2">Second object to be compared.</param> /// <returns>true if equal, false if not.</returns> public static bool AreEqual(TrainBaselineStatusExtendedData object1, TrainBaselineStatusExtendedData object2) { bool lEqual = object1 != null && object2 != null && object1.AssignedFutureBaseline == object2.AssignedFutureBaseline && object1.AssignedCurrentBaseline == object2.AssignedCurrentBaseline && object1.IsT2GPollingRequired == object2.IsT2GPollingRequired && object1.OnBoardFutureBaseline == object2.OnBoardFutureBaseline && TrainBaselineStatusData.AreEqual(object1.Status, object2.Status); return(lEqual); }
public void TrainBaselineStatusExtendedData_UpdateAfterCreation_SystemOffline_WithPisVersionSetAndCurrentBaselineVersion() { TrainBaselineStatusExtendedData data = new TrainBaselineStatusExtendedData(); SystemInfo system = CreateSystem(TrainName_1, TrainId_1, false, InitializedPisVersion, BaselineWithCurrentOnly); data.Update(system); TrainBaselineStatusData expectedStatusData = new TrainBaselineStatusData(TrainName_1, TrainId_1, system.IsOnline, CurrentBaselineVersion, NoBaselineVersion, PisVersionString, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusExtendedData expectedData = new TrainBaselineStatusExtendedData(expectedStatusData, null, NoBaselineVersion, null, false); Assert.AreEqual(expectedData, data, "Method TrainBaselineStatusExtendedData.Update didn't behave as expected"); }
public void TrainBaselineStatusExtendedData_UpdateAfterCreation_SystemOffline_WithoutT2GMessage() { TrainBaselineStatusExtendedData data = new TrainBaselineStatusExtendedData(); SystemInfo system = CreateSystem(TrainName_1, TrainId_1, false); data.Update(system); TrainBaselineStatusData expectedStatusData = new TrainBaselineStatusData(TrainName_1, TrainId_1, system.IsOnline, NoBaselineVersion, NoBaselineVersion, string.Empty, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusExtendedData expectedData = new TrainBaselineStatusExtendedData(expectedStatusData, null, NoBaselineVersion, null, false); Assert.AreEqual(expectedData, data, "Method TrainBaselineStatusExtendedData.Update didn't behave as expected"); }
/// <summary> /// Initializes a new instance of the TrainBaselineStatusExtendedData class. /// </summary> /// <param name="status">The basic status information.</param> /// <param name="assignedFutureBaseline">The extended information: assigned future baseline version.</param> /// <param name="onBoardFutureBaseline">The extended information: on board future baseline version.</param> /// <param name="assignedCurrentBaseline">The assigned current baseline.</param> /// <param name="isT2GPollingRequired">true if T2G must be ask for possible on-going transfer.</param> public TrainBaselineStatusExtendedData( TrainBaselineStatusData status, string assignedFutureBaseline, string onBoardFutureBaseline, string assignedCurrentBaseline, bool isT2GPollingRequired) { Status = status; AssignedFutureBaseline = assignedFutureBaseline; OnBoardFutureBaseline = onBoardFutureBaseline; IsT2GPollingRequired = isT2GPollingRequired; AssignedCurrentBaseline = assignedCurrentBaseline; }
public void TrainBaselineStatusExtendedData_UpdateExisting_Offline_StatusUnknown_CurrentAndFutureVersionUnset_WithOfflineSystem_WithoutAnyT2GMessage() { TrainBaselineStatusData statusData = new TrainBaselineStatusData(TrainName_1, TrainId_1, false, NoBaselineVersion, NoBaselineVersion, string.Empty, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusExtendedData data = new TrainBaselineStatusExtendedData(statusData); SystemInfo system = CreateSystem(TrainName_1, TrainId_1, false); data.Update(system); TrainBaselineStatusData expectedStatusData = new TrainBaselineStatusData(TrainName_1, TrainId_1, system.IsOnline, NoBaselineVersion, NoBaselineVersion, string.Empty, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusExtendedData expectedData = new TrainBaselineStatusExtendedData(expectedStatusData, null, NoBaselineVersion, null, false); Assert.AreEqual(expectedData, data, "Method TrainBaselineStatusExtendedData.Update didn't behave as expected"); }
public void TrainBaselineStatusScenario_WhenConnectionIsEstablishedWithT2G_NewTrainsAreAddedToTrainBaselineStatus() { TrainBaselineStatusData expectedValue = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(TRAIN_NAME_1, expectedValue); CreateT2GServicesStub(); _hostIdentificationService.Close(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, false); InitializeDataPackageService(false); InitializePISGroundSession(); ReopenIdentificationService(); WaitPisGroundIsConnectedWithT2G(true); WaitTrainBaselineStatusesEquals(expectedStatuses, "Newly discovered train are not added as expected into the TrainBaselineStatus database when a connection with T2G is established"); }
public void TrainBaselineStatusExtendedData_UpdateExisting_Offline_StatusTransferPlanned_CurrentVersionAndFutureVersionUnset_AssignedFutureSet_WithOfflineSystem_WithoutAnyT2GMessage() { TrainBaselineStatusData statusData = new TrainBaselineStatusData(TrainName_1, TrainId_1, false, NoBaselineVersion, NoBaselineVersion, string.Empty, BaselineProgressStatusEnum.TRANSFER_PLANNED); statusData.RequestId = RequestId; statusData.TaskId = TaskId; TrainBaselineStatusExtendedData data = new TrainBaselineStatusExtendedData(statusData, FutureBaselineversion, NoBaselineVersion, NoBaselineVersion, true); SystemInfo system = CreateSystem(TrainName_1, TrainId_1, false); data.Update(system); TrainBaselineStatusData expectedStatusData = new TrainBaselineStatusData(TrainName_1, TrainId_1, system.IsOnline, NoBaselineVersion, FutureBaselineversion, string.Empty, BaselineProgressStatusEnum.TRANSFER_PLANNED); expectedStatusData.RequestId = RequestId; expectedStatusData.TaskId = TaskId; TrainBaselineStatusExtendedData expectedData = new TrainBaselineStatusExtendedData(expectedStatusData, FutureBaselineversion, NoBaselineVersion, NoBaselineVersion, true); Assert.AreEqual(expectedData, data, "Method TrainBaselineStatusExtendedData.Update didn't behave as expected"); }
public void TrainBaselineStatusScenario_OnSystemChangedNotificationAddNewTrain() { TrainBaselineStatusData valueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain2 = new TrainBaselineStatusData(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, "5.4.3.3", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain3 = new TrainBaselineStatusData(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, "1.0.0.0", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); // Initialize services CreateT2GServicesStub(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeDataPackageService(false); InitializePISGroundSession(); // Wait that history log was on expected status. WaitTrainBaselineStatusesEquals(expectedStatuses, "Online statuses of train not updated in train baseline status when PIS-Ground connect with T2G"); // TRAIN-1 become train online expectedStatuses.Add(valueTrain1.TrainId, valueTrain1.Clone()); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, true); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemChanged does not update the train number field in train baseline statuses database."); // TRAIN-0 added expectedStatuses.Add(valueTrain3.TrainId, valueTrain3.Clone()); InitializeTrain(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, TRAIN_IP_0, TRAIN_DATA_PACKAGE_PORT_0, commLinkEnum.wifi, false, "1.0.0.0"); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemChanged does not update the train number field in train baseline statuses database."); // TRAIN-2 added expectedStatuses.Add(valueTrain2.TrainId, valueTrain2.Clone()); InitializeTrain(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, TRAIN_IP_2, TRAIN_DATA_PACKAGE_PORT_2, commLinkEnum._2G3G, false, "5.4.3.3"); WaitTrainBaselineStatusesEquals(expectedStatuses, "T2G - OnSystemChanged does not update the train number field in train baseline statuses database."); }
public void TrainBaselineStatusScenario_OnlineStatusOfTrainBaselineUpdateWhenCommunicationIsEstablishedWithT2G() { TrainBaselineStatusData valueTrain1 = new TrainBaselineStatusData(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, DEFAULT_BASELINE, BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain2 = new TrainBaselineStatusData(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, "5.4.3.3", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); TrainBaselineStatusData valueTrain3 = new TrainBaselineStatusData(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, "1.0.0.0", BaselineStatusUpdater.NoBaselineVersion, DEFAULT_PIS_VERSION, BaselineProgressStatusEnum.UNKNOWN); Dictionary <string, TrainBaselineStatusData> expectedStatuses = new Dictionary <string, TrainBaselineStatusData>(); expectedStatuses.Add(valueTrain1.TrainId, valueTrain1.Clone()); expectedStatuses.Add(valueTrain2.TrainId, valueTrain2.Clone()); expectedStatuses.Add(valueTrain3.TrainId, valueTrain3.Clone()); // Initialize the history log database valueTrain1.OnlineStatus = false; valueTrain3.OnlineStatus = true; UpdateHistoryLog(valueTrain1); UpdateHistoryLog(valueTrain2); UpdateHistoryLog(valueTrain3); valueTrain1.OnlineStatus = true; valueTrain3.OnlineStatus = false; // Initialize services CreateT2GServicesStub(); _hostIdentificationService.Close(); _dataStoreServiceStub.InitializeRemoteDataStoreMockWithDefaultBehavior(); InitializeTrain(TRAIN_NAME_1, TRAIN_VEHICLE_ID_1, true, TRAIN_IP_1, TRAIN_DATA_PACKAGE_PORT_1, commLinkEnum._2G3G, true); InitializeTrain(TRAIN_NAME_2, TRAIN_VEHICLE_ID_2, true, TRAIN_IP_2, TRAIN_DATA_PACKAGE_PORT_2, commLinkEnum._2G3G, false, "5.4.3.3"); InitializeTrain(TRAIN_NAME_0, TRAIN_VEHICLE_ID_0, false, TRAIN_IP_0, TRAIN_DATA_PACKAGE_PORT_0, commLinkEnum.wifi, false, "1.0.0.0"); InitializeDataPackageService(false); InitializePISGroundSession(); ReopenIdentificationService(); WaitPisGroundIsConnectedWithT2G(true); // Wait that history log was updated. WaitTrainBaselineStatusesEquals(expectedStatuses, "Online statuses of train not updated in train baseline status when PIS-Ground connect with T2G"); }
/// <summary> /// Fetch information from the specified system object and update the value of the managed object. /// </summary> /// <param name="info">The system information to synchronize with.</param> /// <exception cref="ArgumentNullException">info is null</exception> /// <exception cref="ArgumentOutOfRangeException">The specified info object has a different system identifier than current object.</exception> public void Update(SystemInfo info) { if (info == null) { throw new ArgumentNullException("info"); } else if (Status == null) { Status = new TrainBaselineStatusData(info.SystemId, info.VehiclePhysicalId, info.IsOnline, BaselineStatusUpdater.NoBaselineVersion); } else if (info.SystemId != Status.TrainId) { throw new ArgumentOutOfRangeException("info"); } ushort currentValue; if (!ushort.TryParse(Status.TrainNumber, NumberStyles.Integer, CultureInfo.InvariantCulture, out currentValue) || info.VehiclePhysicalId != currentValue) { Status.TrainNumber = info.VehiclePhysicalId.ToString(CultureInfo.InvariantCulture); } Status.OnlineStatus = info.IsOnline; if (info.PisVersion != null && !string.IsNullOrEmpty(info.PisVersion.VersionPISSoftware)) { Status.PisOnBoardVersion = info.PisVersion.VersionPISSoftware; } if (info.PisBaseline != null && info.PisBaseline.IsInitialized) { string lNotificationCurrentVersion = info.PisBaseline.CurrentVersionOut; string lNotificationFutureVersion = info.PisBaseline.FutureVersionOut; if (lNotificationCurrentVersion != null && lNotificationFutureVersion != null) { if (lNotificationCurrentVersion.Length == 0) { lNotificationCurrentVersion = BaselineStatusUpdater.NoBaselineVersion; } if (lNotificationFutureVersion.Length == 0) { lNotificationFutureVersion = BaselineStatusUpdater.NoBaselineVersion; } string lEffectiveFutureVersion = IsValidVersion(AssignedFutureBaseline) ? AssignedFutureBaseline : IsValidVersion(AssignedCurrentBaseline) ? AssignedCurrentBaseline : IsValidVersion(Status.FutureBaselineVersion) ? Status.FutureBaselineVersion : BaselineStatusUpdater.NoBaselineVersion; OnBoardFutureBaseline = lNotificationFutureVersion; if (Status != null) { switch (Status.ProgressStatus) { case BaselineProgressStatusEnum.UPDATED: if (Status.CurrentBaselineVersion != lNotificationCurrentVersion) { // The current baseline changed unexpectedly Status.ProgressStatus = BaselineProgressStatusEnum.UNKNOWN; Status.RequestId = Guid.Empty; Status.TaskId = 0; Status.CurrentBaselineVersion = lNotificationCurrentVersion; } Status.FutureBaselineVersion = lNotificationFutureVersion; IsT2GPollingRequired = false; break; case BaselineProgressStatusEnum.DEPLOYED: if (lEffectiveFutureVersion == lNotificationCurrentVersion) { // The future baseline has been promoted to current Status.ProgressStatus = BaselineProgressStatusEnum.UPDATED; } else if (lEffectiveFutureVersion != lNotificationFutureVersion) { // The future baseline changed unexpectedly Status.ProgressStatus = BaselineProgressStatusEnum.UNKNOWN; Status.RequestId = Guid.Empty; Status.TaskId = 0; } else { // Nothing special occurred Status.FutureBaselineVersion = lEffectiveFutureVersion; } Status.CurrentBaselineVersion = lNotificationCurrentVersion; Status.FutureBaselineVersion = lNotificationFutureVersion; IsT2GPollingRequired = false; break; case BaselineProgressStatusEnum.TRANSFER_COMPLETED: case BaselineProgressStatusEnum.TRANSFER_IN_PROGRESS: case BaselineProgressStatusEnum.TRANSFER_PAUSED: case BaselineProgressStatusEnum.TRANSFER_PLANNED: // Expect that request id is set when we are in these statuses and we expect a future version if (Status.RequestId == Guid.Empty || !IsValidVersion(lEffectiveFutureVersion)) { Status.FutureBaselineVersion = lNotificationFutureVersion; Status.CurrentBaselineVersion = lNotificationCurrentVersion; Status.TaskId = 0; Status.ProgressStatus = BaselineProgressStatusEnum.UNKNOWN; } else if (lEffectiveFutureVersion == lNotificationCurrentVersion && IsValidVersion(lNotificationCurrentVersion)) { // The assigned baseline has been promoted to current baseline // Note: In the current state, the future baseline is set to the assigned baseline. Status.ProgressStatus = BaselineProgressStatusEnum.UPDATED; Status.FutureBaselineVersion = lNotificationFutureVersion; IsT2GPollingRequired = false; } else if (lEffectiveFutureVersion == lNotificationFutureVersion) { // The assigned baseline has been promoted to future baseline // Note: In the current state, the future baseline is set to the assigned baseline. Status.ProgressStatus = BaselineProgressStatusEnum.DEPLOYED; IsT2GPollingRequired = false; } else { Status.FutureBaselineVersion = lEffectiveFutureVersion; if (!IsValidVersion(AssignedFutureBaseline) && !IsValidVersion(AssignedCurrentBaseline)) { AssignedFutureBaseline = lEffectiveFutureVersion; } } // Do not update the future baseline since in the current state, // it is set to the assigned baseline (not the on board baseline) Status.CurrentBaselineVersion = lNotificationCurrentVersion; break; case BaselineProgressStatusEnum.UNKNOWN: if (Status.RequestId != Guid.Empty) { if (IsValidVersion(lEffectiveFutureVersion)) { if (lEffectiveFutureVersion == lNotificationCurrentVersion) { // The assigned baseline has been promoted to current baseline Status.ProgressStatus = BaselineProgressStatusEnum.UPDATED; IsT2GPollingRequired = false; } else if (lEffectiveFutureVersion == lNotificationFutureVersion) { // The assigned baseline has been promoted to future baseline // Note: In the current state, the future baseline is set to the assigned baseline. Status.ProgressStatus = BaselineProgressStatusEnum.DEPLOYED; IsT2GPollingRequired = false; } else { // Nothing to do } } } Status.CurrentBaselineVersion = lNotificationCurrentVersion; Status.FutureBaselineVersion = lNotificationFutureVersion; break; } } } } else { // Pis Baseline is not initialized yet. Only ensure that future version is set. OnBoardFutureBaseline = BaselineStatusUpdater.NoBaselineVersion; if (Status.RequestId != Guid.Empty) { string lEffectiveFutureVersion = IsValidVersion(AssignedFutureBaseline) ? AssignedFutureBaseline : IsValidVersion(AssignedCurrentBaseline) ? AssignedCurrentBaseline : BaselineStatusUpdater.NoBaselineVersion; // Perform update only if we expect a future version and current baseline is not set to future version if (IsValidVersion(lEffectiveFutureVersion) && Status.CurrentBaselineVersion != lEffectiveFutureVersion) { Status.FutureBaselineVersion = lEffectiveFutureVersion; } } } if (Status != null) { if (Status.ProgressStatus == BaselineProgressStatusEnum.UPDATED) { Status.RequestId = Guid.Empty; Status.TaskId = 0; IsT2GPollingRequired = false; } else if (Status.RequestId == Guid.Empty) { Status.TaskId = 0; IsT2GPollingRequired = false; } if (string.IsNullOrEmpty(Status.FutureBaselineVersion)) { Status.FutureBaselineVersion = BaselineStatusUpdater.NoBaselineVersion; } if (string.IsNullOrEmpty(Status.CurrentBaselineVersion)) { Status.CurrentBaselineVersion = BaselineStatusUpdater.NoBaselineVersion; } } }
/// <summary> /// Initializes a new instance of the TrainBaselineStatusExtendedData class. /// </summary> /// <param name="status">The basic status information.</param> public TrainBaselineStatusExtendedData( TrainBaselineStatusData status) : this(status, null, null, null, true) { // No logic body }
/// <summary> /// Updates the history log database with information provided by data.. /// </summary> /// <param name="data">The train baseline status information to write into database.</param> protected void UpdateHistoryLog(TrainBaselineStatusData data) { HistoryLogger.UpdateTrainBaselineStatus(data.TrainId, data.RequestId, data.TaskId, data.TrainNumber, data.OnlineStatus, data.ProgressStatus, data.ProgressStatusState, data.CurrentBaselineVersion, data.FutureBaselineVersion, data.PisOnBoardVersion); }