public async Task CopyModelOperationCreatesDiagnosticScopeOnUpdate() { using var testListener = new ClientDiagnosticListener(DiagnosticNamespace); using var stream = new MemoryStream(Encoding.UTF8.GetBytes("{}")); var mockResponse = new MockResponse(200); mockResponse.ContentStream = stream; var mockTransport = new MockTransport(new[] { mockResponse, mockResponse }); var options = new FormRecognizerClientOptions() { Transport = mockTransport }; var client = CreateFormTrainingClient(options); var operation = new CopyModelOperation("00000000-0000-0000-0000-000000000000/copyresults/00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", client); if (IsAsync) { await operation.UpdateStatusAsync(); } else { operation.UpdateStatus(); } testListener.AssertScope($"{nameof(CopyModelOperation)}.{nameof(CopyModelOperation.UpdateStatus)}"); }
public async Task CopyModel(bool useTokenCredential) { var sourceClient = CreateDocumentModelAdministrationClient(useTokenCredential); var targetClient = CreateDocumentModelAdministrationClient(useTokenCredential); var modelId = Recording.GenerateId(); await using var trainedModel = await CreateDisposableBuildModelAsync(modelId); var targetModelId = Recording.GenerateId(); CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(targetModelId); CopyModelOperation operation = await sourceClient.StartCopyModelToAsync(trainedModel.ModelId, targetAuth); await operation.WaitForCompletionAsync(); Assert.IsTrue(operation.HasValue); DocumentModel copiedModel = operation.Value; ValidateDocumentModel(copiedModel); Assert.AreEqual(targetAuth.TargetModelId, copiedModel.ModelId); Assert.AreNotEqual(trainedModel.ModelId, copiedModel.ModelId); Assert.AreEqual(1, copiedModel.DocTypes.Count); Assert.IsTrue(copiedModel.DocTypes.ContainsKey(modelId)); DocTypeInfo docType = copiedModel.DocTypes[modelId]; Assert.AreEqual(DocumentBuildMode.Template, docType.BuildMode); }
public async Task CopyModelWithoutLabelsAndModelName() { var sourceClient = CreateFormTrainingClient(); var targetClient = CreateFormTrainingClient(); var resourceId = TestEnvironment.TargetResourceId; var region = TestEnvironment.TargetResourceRegion; string modelName = "My model to copy"; await using var trainedModel = await CreateDisposableTrainedModelAsync(useTrainingLabels : false, modelName : modelName); CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(resourceId, region); CopyModelOperation operation = await sourceClient.StartCopyModelAsync(trainedModel.ModelId, targetAuth); await operation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(operation.HasValue); CustomFormModelInfo modelCopied = operation.Value; Assert.AreEqual(targetAuth.ModelId, modelCopied.ModelId); Assert.AreNotEqual(trainedModel.ModelId, modelCopied.ModelId); CustomFormModel modelCopiedFullInfo = await sourceClient.GetCustomModelAsync(modelCopied.ModelId).ConfigureAwait(false); Assert.AreEqual(modelName, modelCopiedFullInfo.ModelName); }
public async Task CopyModelAsync() { #region Snippet:FormRecognizerSampleCreateCopySourceClient #if SNIPPET string sourceEndpoint = "<source_endpoint>"; string sourceApiKey = "<source_apiKey>"; #else string sourceEndpoint = TestEnvironment.Endpoint; string sourceApiKey = TestEnvironment.ApiKey; #endif var sourcecredential = new AzureKeyCredential(sourceApiKey); var sourceClient = new DocumentModelAdministrationClient(new Uri(sourceEndpoint), new AzureKeyCredential(sourceApiKey)); #endregion // For the purpose of this sample, we are going to create a model to copy. Please note that // if you already have a model, this is not necessary. #if SNIPPET Uri trainingFileUri = new Uri("<trainingFileUri>"); #else Uri trainingFileUri = new Uri(TestEnvironment.BlobContainerSasUrl); #endif BuildModelOperation operation = await sourceClient.StartBuildModelAsync(trainingFileUri, DocumentBuildMode.Template); Response <DocumentModel> operationResponse = await operation.WaitForCompletionAsync(); DocumentModel model = operationResponse.Value; #region Snippet:FormRecognizerSampleCreateCopyTargetClient #if SNIPPET string targetEndpoint = "<target_endpoint>"; string targetApiKey = "<target_apiKey>"; #else string targetEndpoint = TestEnvironment.Endpoint; string targetApiKey = TestEnvironment.ApiKey; #endif var targetCredential = new AzureKeyCredential(targetApiKey); var targetClient = new DocumentModelAdministrationClient(new Uri(targetEndpoint), new AzureKeyCredential(targetApiKey)); #endregion #region Snippet:FormRecognizerSampleGetCopyAuthorization CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(); #endregion #region Snippet:FormRecognizerSampleCreateCopyModel #if SNIPPET string modelId = "<source_modelId>"; #else string modelId = model.ModelId; #endif CopyModelOperation newModelOperation = await sourceClient.StartCopyModelToAsync(modelId, targetAuth); await newModelOperation.WaitForCompletionAsync(); DocumentModel newModel = newModelOperation.Value; Console.WriteLine($"Original model ID => {modelId}"); Console.WriteLine($"Copied model ID => {newModel.ModelId}"); #endregion }
public async Task CopyModelOperationCanPollFromNewObject() { var client = CreateFormTrainingClient(out var nonInstrumentedClient); var resourceId = TestEnvironment.TargetResourceId; var region = TestEnvironment.TargetResourceRegion; await using var trainedModel = await CreateDisposableTrainedModelAsync(useTrainingLabels : false); CopyAuthorization targetAuth = await client.GetCopyAuthorizationAsync(resourceId, region); var operation = await client.StartCopyModelAsync(trainedModel.ModelId, targetAuth); var sameOperation = new CopyModelOperation(operation.Id, targetAuth.ModelId, nonInstrumentedClient); await sameOperation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(sameOperation.HasValue); Assert.AreEqual(targetAuth.ModelId, sameOperation.Value.ModelId); }
public void StartCopyModelWithError() { using var stream = new MemoryStream(Encoding.UTF8.GetBytes(@" { ""operationId"": ""31534618802_bc949c32-9281-4d00-a9c9-ef0080bb1b2a"", ""kind"": ""documentModelCopy"", ""status"": ""failed"", ""createdDateTime"": ""2021-09-15T23:39:58Z"", ""lastUpdatedDateTime"": ""2021-09-15T23:40:02Z"", ""resourceLocation"": ""https://mariari-centraluseuap.cognitiveservices.azure.com/formrecognizer/documentModels/1221528251?api-version=2021-09-30-preview"", ""error"": { ""code"": ""InvalidSomething"", ""message"": ""Invalid Something."", ""details"": [ { ""code"": ""InternalServerError"", ""message"": ""An unexpected error occurred."" }, { ""code"": ""InvalidContentDimensions"", ""message"": ""The input image dimensions are out of range. Refer to documentation for supported image dimensions."", ""target"": ""2"" } ] } }")); var mockResponse = new MockResponse(200); mockResponse.ContentStream = stream; var mockTransport = new MockTransport(new[] { mockResponse }); var client = CreateDocumentModelAdministrationClient(new DocumentAnalysisClientOptions() { Transport = mockTransport }); var operation = new CopyModelOperation("31534618802_bc949c32-9281-4d00-a9c9-ef0080bb1b2a", client); RequestFailedException ex = Assert.ThrowsAsync <RequestFailedException>(async() => await operation.UpdateStatusAsync()); Assert.AreEqual("InvalidSomething", ex.ErrorCode); Assert.IsTrue(ex.Message.Contains("Invalid Something.")); Assert.IsTrue(ex.Message.Contains("AdditionInformation")); }
public async Task CopyComposedModel(bool useTokenCredential) { var sourceClient = CreateFormTrainingClient(useTokenCredential); var targetClient = CreateFormTrainingClient(useTokenCredential); var resourceId = TestEnvironment.TargetResourceId; var region = TestEnvironment.TargetResourceRegion; await using var trainedModelA = await CreateDisposableTrainedModelAsync(useTrainingLabels : true); await using var trainedModelB = await CreateDisposableTrainedModelAsync(useTrainingLabels : true); var modelIds = new List <string> { trainedModelA.ModelId, trainedModelB.ModelId }; string modelName = "My composed model"; CreateComposedModelOperation operation = await sourceClient.StartCreateComposedModelAsync(modelIds, modelName); await operation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(operation.HasValue); CustomFormModel composedModel = operation.Value; CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(resourceId, region); CopyModelOperation copyOperation = await sourceClient.StartCopyModelAsync(composedModel.ModelId, targetAuth); await copyOperation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(copyOperation.HasValue); CustomFormModelInfo modelCopied = copyOperation.Value; Assert.AreEqual(targetAuth.ModelId, modelCopied.ModelId); Assert.AreNotEqual(composedModel.ModelId, modelCopied.ModelId); CustomFormModel modelCopiedFullInfo = await sourceClient.GetCustomModelAsync(modelCopied.ModelId).ConfigureAwait(false); Assert.AreEqual(modelName, modelCopiedFullInfo.ModelName); foreach (var submodel in modelCopiedFullInfo.Submodels) { Assert.IsTrue(modelIds.Contains(submodel.ModelId)); } }
public async Task CopyModelOperationCanPollFromNewObject() { // Skip instrumenting here because the internal service client passed to the operation object would be made null otherwise, // making the test fail. var client = CreateFormTrainingClient(skipInstrumenting: true); var resourceId = TestEnvironment.TargetResourceId; var region = TestEnvironment.TargetResourceRegion; await using var trainedModel = await CreateDisposableTrainedModelAsync(useTrainingLabels : false); CopyAuthorization targetAuth = await client.GetCopyAuthorizationAsync(resourceId, region); var operation = await client.StartCopyModelAsync(trainedModel.ModelId, targetAuth); var sameOperation = new CopyModelOperation(operation.Id, targetAuth.ModelId, client); await sameOperation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(sameOperation.HasValue); Assert.AreEqual(targetAuth.ModelId, sameOperation.Value.ModelId); }
public async Task CopyModelWithTags() { var sourceClient = CreateDocumentModelAdministrationClient(); var targetClient = CreateDocumentModelAdministrationClient(); var modelId = Recording.GenerateId(); await using var trainedModel = await CreateDisposableBuildModelAsync(modelId); var tags = TestingTags.ToDictionary(t => t.Key, t => t.Value); var targetModelId = Recording.GenerateId(); CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(targetModelId, tags : tags); CopyModelOperation operation = await sourceClient.StartCopyModelToAsync(trainedModel.ModelId, targetAuth); await operation.WaitForCompletionAsync(); DocumentModel copiedModel = operation.Value; CollectionAssert.AreEquivalent(TestingTags, copiedModel.Tags); await sourceClient.DeleteModelAsync(targetModelId); }
public async Task CopyModel(bool useTokenCredential) { var sourceClient = CreateDocumentModelAdministrationClient(useTokenCredential); var targetClient = CreateDocumentModelAdministrationClient(useTokenCredential); var modelId = Recording.GenerateId(); await using var trainedModel = await CreateDisposableBuildModelAsync(modelId); var targetModelId = Recording.GenerateId(); CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(targetModelId); CopyModelOperation operation = await sourceClient.StartCopyModelAsync(trainedModel.ModelId, targetAuth); await operation.WaitForCompletionAsync(); Assert.IsTrue(operation.HasValue); DocumentModel modelCopied = operation.Value; ValidateDocumentModel(modelCopied); Assert.AreEqual(targetAuth.TargetModelId, modelCopied.ModelId); Assert.AreNotEqual(trainedModel.ModelId, modelCopied.ModelId); }
public async Task CopyModel() { var sourceClient = CreateFormTrainingClient(); var targetClient = CreateFormTrainingClient(); var resourceId = TestEnvironment.TargetResourceId; var region = TestEnvironment.TargetResourceRegion; await using var trainedModel = await CreateDisposableTrainedModelAsync(useTrainingLabels : true); CopyAuthorization targetAuth = await targetClient.GetCopyAuthorizationAsync(resourceId, region); CopyModelOperation operation = await sourceClient.StartCopyModelAsync(trainedModel.ModelId, targetAuth); await operation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(operation.HasValue); CustomFormModelInfo modelCopied = operation.Value; Assert.IsNotNull(modelCopied.TrainingCompletedOn); Assert.IsNotNull(modelCopied.TrainingStartedOn); Assert.AreEqual(targetAuth.ModelId, modelCopied.ModelId); Assert.AreNotEqual(trainedModel.ModelId, modelCopied.ModelId); }