123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- using System;
- using System.IO;
- using Vinno.IUS.Common.Log;
- using Vinno.vCloud.Common.FIS.Helper;
- using WingInterfaceLibrary.DTO.Storage;
- using WingInterfaceLibrary.Interface;
- using WingInterfaceLibrary.Request.Storage;
- namespace Vinno.vCloud.Common.FIS.Test
- {
- public class RemedicalServiceTestV2 : VCloudTestItem
- {
- private readonly string _remedicalServiceTestError1 = "RemedicalServiceTestError1";
- private readonly string _remedicalServiceTestError2 = "RemedicalServiceTestError2";
- private readonly string _remedicalServiceTestError3 = "RemedicalServiceTestError3";
- private readonly string _testFileName = "RemedicalTest";
- private readonly object _terminalStorageInfoLocker = new object();
- private StorageServiceSettingDTO _terminalStorageInfo;
- public bool IsEnable => VCloudServiceTest.EnableRemedicalService;
- public RemedicalServiceTestV2(VCloudServiceTest vCloudServiceTest) : base("RemedicalService", vCloudServiceTest)
- {
- }
- ~RemedicalServiceTestV2()
- {
- lock (_terminalStorageInfoLocker)
- {
- _terminalStorageInfo = null;
- }
- }
- public override VCloudServiceTestResult Execute()
- {
- //Check if remedical service enabled
- if (!IsEnable)
- {
- return new VCloudServiceTestResult(Id, VCloudTestItemStatus.CanSkipped, _remedicalServiceTestError1, "(201)");//ErrorCode=201
- }
- //Check if can store file to remedical storage server
- var result = TimeoutExecute(CheckRemedicalStorageServer, 10000);
- if (result == VCloudSubItemTestStatus.Timeout)
- {
- return new VCloudServiceTestResult(Id, VCloudTestItemStatus.TestFailed, TimeoutError, "(204)");//ErrorCode=204
- }
- if (result == VCloudSubItemTestStatus.Failed)
- {
- return new VCloudServiceTestResult(Id, VCloudTestItemStatus.TestFailed, _remedicalServiceTestError3, VCloudServiceTest.VCloudPort);
- }
- return new VCloudServiceTestResult(Id, VCloudTestItemStatus.TestDone);
- }
- private VCloudSubItemTestStatus CheckRemedicalStorageServer()
- {
- var testFile = Path.Combine(VCloudServiceTest.WorkingFolder, _testFileName);
- File.WriteAllText(testFile, "Just test for remedical storage!");
- var storageInfo = GetRemdicalStorageInfo();
- if (storageInfo == null)
- {
- return VCloudSubItemTestStatus.Failed;
- }
- using (FileStream fileStream = new FileStream(testFile, FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
- {
- byte[] buffer = new byte[fileStream.Length];
- fileStream.Read(buffer, 0, buffer.Length);
- if (UploadFileHelper.UploadFile(_terminalStorageInfo.StorageUrl, buffer, _terminalStorageInfo.ContentType, _terminalStorageInfo.Authorization))
- {
- return VCloudSubItemTestStatus.Successful;
- }
- else
- {
- return VCloudSubItemTestStatus.Failed;
- }
- }
- }
- private StorageServiceSettingDTO GetRemdicalStorageInfo()
- {
- lock (_terminalStorageInfoLocker)
- {
- try
- {
- if (_terminalStorageInfo == null)
- {
- var client = VCloudServiceTest.GetJsonRpcClient();
- var storageService = client.CreateProxy<IStorageService>();
- var checkStorageRequest = new CheckStorageRequest()
- {
- FileName = _testFileName,
- };
- _terminalStorageInfo = JsonRpcHelper.GetStorageTestUrl(storageService, checkStorageRequest);
- }
- return _terminalStorageInfo;
- }
- catch (Exception ex)
- {
- Logger.WriteLineInfo($"RemedicalServiceTestV2 - GetRemdicalStorageInfo Error :{ex}");
- return null;
- }
- }
- }
- }
- }
|