public void CancelBuildBasicTest() { const string modelName = "testModel"; string catalogFilePath = Path.Combine(TestContext.DeploymentDirectory, "books-catalog-with-features.csv"); string usageFilePath = Path.Combine(TestContext.DeploymentDirectory, "books-usage.csv"); var model = ApiClient.CreateModel(modelName); var catalogImportStats = ApiClient.ImportCatalog(model.Id, catalogFilePath); var usageImportStats = ApiClient.ImportUsage(model.Id, usageFilePath); var buildRequestInfo = new BuildRequestInfo { Description = "Build1", BuildType = BuildType.Recommendation.ToString(), BuildParameters = new BuildParameters { Recommendation = new RecommendationBuildParameters { NumberOfModelIterations = 10 } } }; string locationHeader; var buildId = ApiClient.BuildModel(model.Id, buildRequestInfo, out locationHeader); Debug.Assert(buildId != 0, "BuildId not valid"); ApiClient.CancelBuild(locationHeader); }
public long BuildModel(string modelId, BuildRequestInfo buildRequestInfo, out string operationLocationHeader) { string uri = _baseUri + "/recommendations/v4.0/models/" + modelId + "/builds"; var response = _httpClient.PostAsJsonAsync(uri, buildRequestInfo).Result; var jsonString = response.Content.ReadAsStringAsync().Result; operationLocationHeader = response.Headers.GetValues("Operation-Location").FirstOrDefault(); var buildModelResponse = JsonConvert.DeserializeObject <BuildModelResponse>(jsonString); return(buildModelResponse.BuildId); }
public void BuildModelBasicTest() { const string modelName = "BooksModel"; string catalogFilePath = Path.Combine(TestContext.DeploymentDirectory, "books-catalog-with-features.csv"); string usageFilePath = Path.Combine(TestContext.DeploymentDirectory, "books-usage.csv"); var model = ApiClient.CreateModel(modelName); var catalogImportStats = ApiClient.ImportCatalog(model.Id, catalogFilePath); Assert.IsTrue(catalogImportStats.ProcessedLineCount == catalogImportStats.ImportedLineCount, "Import catalog failure"); var usageImportStats = ApiClient.ImportUsage(model.Id, usageFilePath); Assert.IsTrue(usageImportStats.ProcessedLineCount == usageImportStats.ImportedLineCount, "Import usage failure"); // Build 1 var buildRequestInfo1 = new BuildRequestInfo { Description = "FBT build", BuildType = BuildType.Fbt.ToString() }; string operationLocationHeader1; var buildId1 = ApiClient.BuildModel(model.Id, buildRequestInfo1, out operationLocationHeader1); Assert.IsTrue(buildId1 >= 0, "BuildId not valid"); var buildInfo1 = ApiClient.CheckForBuildCompletion(operationLocationHeader1); Assert.IsTrue(buildInfo1.Status == "Succeeded"); var getBuildInfo1 = ApiClient.GetBuildById(model.Id, buildId1); Assert.IsTrue(getBuildInfo1.Id == buildId1); Assert.IsTrue(getBuildInfo1.Type.ToString() == buildRequestInfo1.BuildType); //Assert.IsTrue(getBuild.Description == buildRequestInfo.Description); // BUG: This is a bug in existing API controller! // Build 2 var buildRequestInfo2 = new BuildRequestInfo { Description = "Recommendation build", BuildType = BuildType.Recommendation.ToString() }; string operationLocationHeader2; var buildId2 = ApiClient.BuildModel(model.Id, buildRequestInfo2, out operationLocationHeader2); Assert.IsTrue(buildId2 >= 0, "BuildId not valid"); var buildInfo2 = ApiClient.CheckForBuildCompletion(operationLocationHeader2); Assert.IsTrue(buildInfo2.Status == "Succeeded"); ApiClient.SetActiveBuild(model.Id, new UpdateModelRequestInfo { ActiveBuildId = buildId2 }); var buildInfoList = ApiClient.GetAllBuilds(model.Id); Assert.IsTrue(buildInfoList.Builds.ToList().Count == 2); //GetItemRecommendation const string itemIds = "140282033,140327592"; var itemSets = ApiClient.GetItemRecommendation(model.Id, buildId2, itemIds, 10); Assert.IsTrue(itemSets.RecommendedItemSetInfo.Count() == 10); //GetUserRecommendation const string userId = "197020"; var userItemSets = ApiClient.GetUserRecommendation(model.Id, buildId2, userId, 10); Assert.IsTrue(itemSets.RecommendedItemSetInfo.Count() == 10); ApiClient.DeleteBuild(model.Id, buildId1); ApiClient.DeleteBuild(model.Id, buildId2); ApiClient.DeleteModel(model.Id); }