TestManager.cs 4.4 KB

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