private async Task CreateWorkflowType() { //Get the list of workflow types for the specified domain ListWorkflowTypesRequest listWorkflowRequest = new ListWorkflowTypesRequest() { Domain = this.SwfConfiguration.DomainName, Name = this.SwfConfiguration.WorkflowName, RegistrationStatus = RegistrationStatus.REGISTERED }; ListWorkflowTypesResponse listWorkflowTypesResponse = await this.SwfClient.ListWorkflowTypesAsync(listWorkflowRequest); //Check if our activity exists if (listWorkflowTypesResponse.WorkflowTypeInfos.TypeInfos.Count > 0) { return; } //If doesn't exist -> create RegisterWorkflowTypeRequest registerWorkflowTypeRequest = new RegisterWorkflowTypeRequest() { DefaultChildPolicy = ChildPolicy.TERMINATE, DefaultExecutionStartToCloseTimeout = this.SwfConfiguration.ExecutionStartToCloseTimeout, DefaultTaskList = new TaskList() { Name = this.SwfConfiguration.ActivityTasksList }, DefaultTaskStartToCloseTimeout = this.SwfConfiguration.TaskStartToCloseTimeout, Domain = this.SwfConfiguration.DomainName, Name = this.SwfConfiguration.WorkflowName, Version = this.SwfConfiguration.WorkflowVersion }; await this.SwfClient.RegisterWorkflowTypeAsync(registerWorkflowTypeRequest); }
public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListWorkflowTypesResponse response = new ListWorkflowTypesResponse(); response.WorkflowTypeInfos = WorkflowTypeInfosUnmarshaller.Instance.Unmarshall(context); return(response); }
public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListWorkflowTypesResponse response = new ListWorkflowTypesResponse(); UnmarshallResult(context, response); return(response); }
public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { ListWorkflowTypesResponse response = new ListWorkflowTypesResponse(); context.Read(); response.ListWorkflowTypesResult = ListWorkflowTypesResultUnmarshaller.GetInstance().Unmarshall(context); return(response); }
private void SetupAmazonSwfToReturn(params WorkflowTypeInfo[] workflowTypeInfos) { var listWorkflowTypeResponse = new ListWorkflowTypesResponse(); listWorkflowTypeResponse.WorkflowTypeInfos = new WorkflowTypeInfos() { TypeInfos = workflowTypeInfos.ToList() }; _amazonWorkflowClient.Setup(a => a.ListWorkflowTypesAsync(It.IsAny <ListWorkflowTypesRequest>(), default(CancellationToken))) .Returns(Task.FromResult(listWorkflowTypeResponse)); }
private void AmazonSwfReturnsWorkflowEmptyListFor(string workflowName, string domainName) { Action <ListWorkflowTypesRequest, CancellationToken> requestedParameters = (r, c) => { Assert.That(r.Name, Is.EqualTo(workflowName)); Assert.That(r.Domain, Is.EqualTo(domainName)); Assert.That(r.MaximumPageSize, Is.EqualTo(1000)); Assert.That(c, Is.EqualTo(default(CancellationToken))); Assert.That(r.RegistrationStatus, Is.EqualTo(RegistrationStatus.REGISTERED)); }; var emptyListResponse = new ListWorkflowTypesResponse() { WorkflowTypeInfos = new WorkflowTypeInfos() { TypeInfos = new List <WorkflowTypeInfo>() } }; _amazonWorkflowClient.Setup(a => a.ListWorkflowTypesAsync(It.IsAny <ListWorkflowTypesRequest>(), default(CancellationToken))) .Returns(Task.FromResult(emptyListResponse)).Callback(requestedParameters); }
public void CRUDTest() { var domainName = "sdk-dotnet-crud-" + DateTime.Now.Ticks; var regRequest = new RegisterDomainRequest() { Name = domainName, Description = "A Description", WorkflowExecutionRetentionPeriodInDays = "3" }; var regResponse = Client.RegisterDomain(regRequest); try { Sleep(); // Sleep for the eventual consistency Assert.IsNotNull(regResponse.ResponseMetadata.RequestId); var descRequest = new DescribeDomainRequest() { Name = domainName }; var descResponse = Client.DescribeDomain(descRequest); Assert.AreEqual(domainName, descResponse.DomainDetail.DomainInfo.Name); Assert.AreEqual("A Description", descResponse.DomainDetail.DomainInfo.Description); Assert.AreEqual("3", descResponse.DomainDetail.Configuration.WorkflowExecutionRetentionPeriodInDays); Assert.IsNotNull(descResponse.DomainDetail.DomainInfo.Status); DomainInfo info = null; for (int i = 0; i < MaxRetries; i++) { Sleep(); // Sleep for the eventual consistency var listDomainResponse = Client.ListDomains( new ListDomainsRequest() { RegistrationStatus = descResponse.DomainDetail.DomainInfo.Status }); Assert.IsTrue(listDomainResponse.DomainInfos.Infos.Count > 0); info = listDomainResponse.DomainInfos.Infos.FirstOrDefault(x => string.Equals(x.Name, domainName)); if (info != null) { break; } } Assert.IsNotNull(info); Assert.IsNotNull(info.Status); var activityDescription = "My Description Activity" + DateTime.Now.Ticks; var regActivityRequest = new RegisterActivityTypeRequest() { Name = "My Activity", Domain = domainName, Description = activityDescription, Version = "1.0", DefaultTaskList = new TaskList() { Name = "ImportantTasks" }, DefaultTaskHeartbeatTimeout = ONE_HOUR_DURATION, DefaultTaskScheduleToCloseTimeout = TWO_HOUR_DURATION, DefaultTaskScheduleToStartTimeout = THREE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; var regActivityResponse = Client.RegisterActivityType(regActivityRequest); Assert.IsNotNull(regActivityResponse.ResponseMetadata.RequestId); try { Sleep(); // Sleep for the eventual consistency var descActivityTypeRequest = new DescribeActivityTypeRequest() { Domain = domainName, ActivityType = new ActivityType() { Name = "My Activity", Version = "1.0" } }; var descActivityTypeResponse = Client.DescribeActivityType(descActivityTypeRequest); Assert.AreEqual(ONE_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskHeartbeatTimeout); Assert.AreEqual(TWO_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskScheduleToCloseTimeout); Assert.AreEqual(THREE_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskScheduleToStartTimeout); Assert.AreEqual(FOUR_HOUR_DURATION, descActivityTypeResponse.ActivityTypeDetail.Configuration.DefaultTaskStartToCloseTimeout); ListActivityTypesResponse listActivityResponse = null; for (int i = 0; i < MaxRetries; i++) { Sleep(); // Sleep for the eventual consistency listActivityResponse = Client.ListActivityTypes( new ListActivityTypesRequest() { Domain = domainName, RegistrationStatus = descActivityTypeResponse.ActivityTypeDetail.TypeInfo.Status }); if (listActivityResponse.ActivityTypeInfos.TypeInfos.Count > 0) { break; } } Assert.IsNotNull(listActivityResponse); Assert.IsTrue(listActivityResponse.ActivityTypeInfos.TypeInfos.Count > 0); var acInfo = listActivityResponse.ActivityTypeInfos.TypeInfos.FirstOrDefault(x => x.Description == activityDescription); Assert.IsNotNull(acInfo); } finally { var depActivityRequest = new DeprecateActivityTypeRequest() { Domain = domainName, ActivityType = new ActivityType() { Name = "My Activity", Version = "1.0" } }; var depActivityTypeResponse = Client.DeprecateActivityType(depActivityRequest); } var workflowDescription = "My Workflow Description" + DateTime.Now.Ticks; var regWorkflowRequest = new RegisterWorkflowTypeRequest() { Name = "My Workflow", Domain = domainName, Description = workflowDescription, Version = "1.0", DefaultTaskList = new TaskList() { Name = "ImportantTasks" }, DefaultExecutionStartToCloseTimeout = THREE_HOUR_DURATION, DefaultTaskStartToCloseTimeout = FOUR_HOUR_DURATION }; var regWorkflowResponse = Client.RegisterWorkflowType(regWorkflowRequest); try { Sleep(); // Sleep for the eventual consistency var descWorkFlowRequest = new DescribeWorkflowTypeRequest() { Domain = domainName, WorkflowType = new WorkflowType() { Name = "My Workflow", Version = "1.0" } }; var descWorkflowResponse = Client.DescribeWorkflowType(descWorkFlowRequest); Assert.AreEqual("My Workflow", descWorkflowResponse.WorkflowTypeDetail.TypeInfo.WorkflowType.Name); Assert.AreEqual("1.0", descWorkflowResponse.WorkflowTypeDetail.TypeInfo.WorkflowType.Version); Assert.AreEqual(THREE_HOUR_DURATION, descWorkflowResponse.WorkflowTypeDetail.Configuration.DefaultExecutionStartToCloseTimeout); Assert.AreEqual(FOUR_HOUR_DURATION, descWorkflowResponse.WorkflowTypeDetail.Configuration.DefaultTaskStartToCloseTimeout); Assert.AreEqual("ImportantTasks", descWorkflowResponse.WorkflowTypeDetail.Configuration.DefaultTaskList.Name); ListWorkflowTypesResponse listWorkflowResponse = null; for (int retries = 0; retries < 5; retries++) { Thread.Sleep(1000 * retries); listWorkflowResponse = Client.ListWorkflowTypes( new ListWorkflowTypesRequest() { Domain = domainName, RegistrationStatus = descWorkflowResponse.WorkflowTypeDetail.TypeInfo.Status }); if (listWorkflowResponse.WorkflowTypeInfos.TypeInfos.Count > 0) { break; } } Assert.IsTrue(listWorkflowResponse.WorkflowTypeInfos.TypeInfos.Count > 0); var wfInfo = listWorkflowResponse.WorkflowTypeInfos.TypeInfos.FirstOrDefault(x => x.Description == workflowDescription); Assert.IsNotNull(wfInfo); } finally { var depWorkflowRequest = new DeprecateWorkflowTypeRequest() { Domain = domainName, WorkflowType = new WorkflowType() { Name = "My Workflow", Version = "1.0" } }; var depWorkflowTypeResponse = Client.DeprecateWorkflowType(depWorkflowRequest); Assert.IsNotNull(depWorkflowTypeResponse.ResponseMetadata.RequestId); } } finally { var depRequest = new DeprecateDomainRequest() { Name = domainName }; var depResponse = Client.DeprecateDomain(depRequest); Assert.IsNotNull(depResponse.ResponseMetadata.RequestId); } }
private static void UnmarshallResult(JsonUnmarshallerContext context, ListWorkflowTypesResponse response) { response.WorkflowTypeInfos = WorkflowTypeInfosUnmarshaller.GetInstance().Unmarshall(context); return; }