Пример #1
0
 public CromwellOnAzureEnvironment(ILoggerFactory loggerFactory, IAzureStorage storage, ICromwellApiClient cromwellApiClient)
 {
     logger                 = loggerFactory.CreateLogger <AzureStorage>();
     this.storage           = storage;
     this.cromwellApiClient = cromwellApiClient;
     logger.LogInformation($"Cromwell URL: {cromwellApiClient.GetUrl()}");
 }
Пример #2
0
 public Lab(ILoggerFactory loggerFactory, string name, IAzureStorage storage, ICromwellApiClient cromwellApiClient)
 {
     logger                 = loggerFactory.CreateLogger <AzureStorage>();
     Name                   = name;
     this.storage           = storage;
     this.cromwellApiClient = cromwellApiClient;
     logger.LogInformation($"Cromwell URL: {cromwellApiClient.GetUrl()}");
 }
        private static async Task <(string newTriggerName, Workflow newTriggerContent)> ProcessAbortRequestAsync(Guid workflowId, ICromwellApiClient cromwellApiClient)
        {
            string   newTriggerName    = null;
            Workflow newTriggerContent = null;

            var loggerFactory = new Mock <ILoggerFactory>();
            var azureStorage  = new Mock <IAzureStorage>();
            var repository    = new Mock <IRepository <TesTask> >();

            loggerFactory
            .Setup(f => f.CreateLogger(It.IsAny <string>()))
            .Returns(new Mock <ILogger>().Object);

            azureStorage
            .Setup(az => az.GetWorkflowsByStateAsync(WorkflowState.Abort))
            .Returns(Task.FromResult(new[] {
                new TriggerFile {
                    Uri           = $"http://tempuri.org/workflows/abort/{workflowId}.json",
                    ContainerName = "workflows",
                    Name          = $"abort/{workflowId}.json",
                    LastModified  = DateTimeOffset.UtcNow
                }
            }.AsEnumerable()));

            azureStorage
            .Setup(az => az.DownloadBlobTextAsync(It.IsAny <string>(), $"abort/{workflowId}.json"))
            .Returns(Task.FromResult(string.Empty));

            azureStorage
            .Setup(az => az.UploadFileTextAsync(It.IsAny <string>(), "workflows", It.IsAny <string>()))
            .Callback((string content, string container, string blobName) => {
                newTriggerName    = blobName;
                newTriggerContent = content is not null ? JsonConvert.DeserializeObject <Workflow>(content) : null;
            });

            var cromwellOnAzureEnvironment = new CromwellOnAzureEnvironment(loggerFactory.Object, azureStorage.Object, cromwellApiClient, repository.Object, Enumerable.Repeat(azureStorage.Object, 1));

            await cromwellOnAzureEnvironment.ProcessAndAbortWorkflowsAsync();

            return(newTriggerName, newTriggerContent);
        }