public async void TrainProject() { using (MockContext context = MockContext.Start(this.GetType().Name)) { HttpMockServer.Initialize(this.GetType().Name, "TrainProject", RecorderMode); var projectId = CreateTrainedImageClassificationProject(); ICustomVisionTrainingClient client = GetTrainingClient(); // Remove the last iteration so we can retrain var iterations = await client.GetIterationsAsync(projectId); var iterationToDelete = iterations[iterations.Count - 1]; iterationToDelete.IsDefault = false; await client.UpdateIterationAsync(projectId, iterationToDelete.Id, iterationToDelete); await client.DeleteIterationAsync(projectId, iterationToDelete.Id); // Need to ensure we wait 1 second between training calls from the previous project. Or // We get 429s. Thread.Sleep(1000); var trainedIteration = await client.TrainProjectAsync(projectId); Assert.NotEqual(iterationToDelete.Name, trainedIteration.Name); Assert.NotEqual(iterationToDelete.Id, trainedIteration.Id); Assert.NotEqual(Guid.Empty, trainedIteration.Id); Assert.False(trainedIteration.IsDefault); Assert.True("Staging" == trainedIteration.Status || "Training" == trainedIteration.Status); Assert.False(trainedIteration.Exportable); await client.DeleteProjectAsync(projectId); } }
public async void TrainAndPublishProject() { using (MockContext context = MockContext.Start(this.GetType())) { HttpMockServer.Initialize(this.GetType(), "TrainAndPublishProject", RecorderMode); using (var project = CreateTrainedImageClassificationProject()) { ICustomVisionTrainingClient client = BaseTests.GetTrainingClient(); // Remove the last trained iteration so we can retrain var iterationToDelete = client.GetIteration(project.ProjectId, project.IterationId); var originalPublishName = iterationToDelete.PublishName; await client.UnpublishIterationAsync(project.ProjectId, iterationToDelete.Id); await client.DeleteIterationAsync(project.ProjectId, iterationToDelete.Id); // Need to ensure we wait 1 second between training calls from the previous project.Or // We get 429s. Thread.Sleep(1000); var trainedIteration = await client.TrainProjectAsync(project.ProjectId); Assert.NotEqual(iterationToDelete.Name, trainedIteration.Name); Assert.NotEqual(iterationToDelete.Id, trainedIteration.Id); Assert.NotEqual(Guid.Empty, trainedIteration.Id); Assert.True("Staging" == trainedIteration.Status || "Training" == trainedIteration.Status); Assert.False(trainedIteration.Exportable); Assert.Null(trainedIteration.PublishName); // Wait for training to complete. while (trainedIteration.Status != "Completed") { Thread.Sleep(1000); trainedIteration = client.GetIteration(project.ProjectId, trainedIteration.Id); } // Verify we can republish using same name Assert.True(client.PublishIteration(project.ProjectId, trainedIteration.Id, originalPublishName, BaseTests.PredictionResourceId)); project.IterationId = trainedIteration.Id; } } }