Пример #1
0
        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);
            }
        }
Пример #2
0
        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;
                }
            }
        }