TestManager.cs 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using FISLib.Connect;
  2. using FISLib.Test;
  3. using System;
  4. using Vinno.FIS.Sonopost.Features.Network;
  5. using Vinno.FIS.Sonopost.Managers.Interfaces;
  6. using Vinno.FIS.Sonopost.Settings;
  7. using Vinno.IUS.Common.Log;
  8. using Vinno.IUS.Common.Utilities;
  9. using JsonHelper = Vinno.FIS.Sonopost.Helpers.JsonHelper;
  10. namespace Vinno.FIS.Sonopost.Managers
  11. {
  12. internal class TestManager : SonopostManager, ITestManager
  13. {
  14. private readonly ILoginManager _loginManager;
  15. private readonly ITestService _fisTestService;
  16. private readonly IConfigManager _configManager;
  17. public ServerNetworkCheckProgress CurrentProgress { get; private set; }
  18. public bool IsRunning { get; private set; }
  19. public TestManager()
  20. {
  21. _configManager = AppManager.Instance.GetManager<IConfigManager>();
  22. _loginManager = AppManager.Instance.GetManager<ILoginManager>();
  23. _fisTestService = AppManager.Instance.GetManager<IFISManager>().FISTestService;
  24. _fisTestService.TestStatusChanged += OnTestStatusChanged;
  25. _fisTestService.TestFinished += OnTestFinished;
  26. }
  27. public void Run()
  28. {
  29. Logger.WriteLineInfo($"Test Manager Run Invoke");
  30. CurrentProgress = new ServerNetworkCheckProgress();
  31. CurrentProgress.Network.Status = ServerNetworkCheckStatus.Handling;
  32. var ultrasoundMachineInfo = AppManager.Instance.GetManager<IFISManager>().UltrasoundMachineInfo;
  33. _fisTestService.CreateVCloudService(_configManager.VCloudServerAddress, _configManager.VCloudServerPort, ultrasoundMachineInfo.USSoftwareVersion, null, ultrasoundMachineInfo.USScreenWidth, ultrasoundMachineInfo.USScreenHeight, ultrasoundMachineInfo.DeviceType);
  34. var userName = DesBuilder.Decrypt(SonopostUserDefinedSettings.Instance.ServerSetting.UserName);
  35. _fisTestService.Excute(true, true, _loginManager.DeviceStatus == DeviceStatus.Logon ? userName : null);
  36. IsRunning = true;
  37. }
  38. public void Stop()
  39. {
  40. Logger.WriteLineInfo($"Test Manager Stop Invoke");
  41. _fisTestService.StopTest();
  42. _fisTestService.CloseVCloudService();
  43. IsRunning = false;
  44. }
  45. private void OnTestStatusChanged(object sender, FISVCloudServiceTestResult e)
  46. {
  47. Logger.WriteLineInfo($"Test Manager OnTestStatusChanged :{JsonHelper.ToJson(e)}");
  48. if (e.TestItemId.Equals(CurrentProgress.Network.Key))
  49. {
  50. HandleEachStep(e, CurrentProgress.Network);
  51. }
  52. else if (e.TestItemId.Equals(CurrentProgress.CloudServer.Key))
  53. {
  54. HandleEachStep(e, CurrentProgress.CloudServer);
  55. }
  56. else if (e.TestItemId.Equals(CurrentProgress.RemedicalService.Key))
  57. {
  58. HandleEachStep(e, CurrentProgress.RemedicalService);
  59. }
  60. else if (e.TestItemId.Equals(CurrentProgress.LiveServer.Key))
  61. {
  62. HandleEachStep(e, CurrentProgress.LiveServer);
  63. }
  64. }
  65. private void HandleEachStep(FISVCloudServiceTestResult e, ServerNetworkCheckStep current)
  66. {
  67. if (FISVCloudTestItemStatus.TestDone == e.Status)
  68. {
  69. current.Status = ServerNetworkCheckStatus.Success;
  70. }
  71. else if (FISVCloudTestItemStatus.TestBeginned == e.Status)
  72. {
  73. current.Status = ServerNetworkCheckStatus.Handling;
  74. }
  75. else
  76. {
  77. current.Status = ServerNetworkCheckStatus.Fail;
  78. current.ErrorMessage = e.ErrorMessage;
  79. }
  80. }
  81. private void OnTestFinished(object sender, EventArgs e)
  82. {
  83. Logger.WriteLineInfo($"Test Manager OnTestFinished ");
  84. _fisTestService.CloseVCloudService();
  85. IsRunning = false;
  86. }
  87. public override void DoDispose()
  88. {
  89. try
  90. {
  91. _fisTestService.TestStatusChanged -= OnTestStatusChanged;
  92. _fisTestService.TestFinished -= OnTestFinished;
  93. }
  94. catch (Exception ex)
  95. {
  96. Logger.WriteLineError($"TestManager DoDispose Error:{ex}");
  97. }
  98. base.DoDispose();
  99. }
  100. }
  101. }