Beispiel #1
0
        public async Task UploadModelAsync_ValidModelPath_UploadSuccessAsync()
        {
            //Arrange
            var destinationFolder = @"C:\MLOps";
            var modelRepository   = new LocalFileModelRepository(new FileSystem(), destinationFolder);
            var runRepositoryMock = new Mock <IRunRepository>();

            var modelCatalog = new ModelCatalog(modelRepository, runRepositoryMock.Object);

            var runId            = Guid.NewGuid();
            var modelPath        = @"C:\data\model.zip";
            var modelStoragePath = @"C:\MLOps";

            using var writer = new StreamWriter(modelPath);
            writer.Close();

            runRepositoryMock.Setup(x => x.CreateRunArtifact(runId, It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            //Act
            await modelCatalog.UploadAsync(runId, modelPath);

            //Assert
            var fileExists = File.Exists(Path.Combine(modelStoragePath, $"{runId}.zip"));

            fileExists.Should().BeTrue();
        }
Beispiel #2
0
        public void TestInitialize()
        {
            var modelRepository   = new LocalFileModelRepository(new FileSystem(), new ModelPathGenerator());
            var runRepositoryMock = new Mock <IRunRepository>();

            runRepositoryMock
            .Setup(x => x.CreateRunArtifact(It.IsAny <Guid>(), It.IsAny <string>()))
            .Returns(Task.FromResult(new RunArtifact()));

            this.modelRepositoryPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".mlops", "model-repository");

            this.sut = new ModelCatalog(modelRepository, runRepositoryMock.Object);
        }
Beispiel #3
0
        public async Task DownloadModel_ThrowsIfFileDoesNotExist()
        {
            var mockFileSystem = new MockFileSystem();
            var folderPath     = mockFileSystem.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".mlops");
            var sut            = new LocalFileModelRepository(mockFileSystem);

            using var memStream = new MemoryStream();

            // Act
            var downloadAction = new Func <Task>(() => sut.DownloadModelAsync(new Guid(), memStream));

            // Assert
            await downloadAction.Should().ThrowExactlyAsync <FileNotFoundException>("Because provided file does not exist on disk");
        }
Beispiel #4
0
        public async Task UploadModel_ShouldCreateFolderIfNotExists()
        {
            // Arrange
            var mockFileSystem = new MockFileSystem();
            var folderPath     = mockFileSystem.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".mlops");

            mockFileSystem.AddFile("model.zip", new MockFileData("test"));
            var sut = new LocalFileModelRepository(mockFileSystem);

            // Act
            await sut.UploadModelAsync(new Guid(), "model.zip");

            // Assert
            mockFileSystem.Directory.Exists(folderPath).Should().Be(true);
        }
Beispiel #5
0
        public async Task DownloadModel_ShouldReturnFileDataFromDisk()
        {
            // Arrange
            var runId          = Guid.NewGuid();
            var mockFileSystem = new MockFileSystem();
            var filePath       = mockFileSystem.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".mlops", $"{runId}.zip");

            mockFileSystem.AddFile(filePath, new MockFileData("test"));
            var sut = new LocalFileModelRepository(mockFileSystem);

            using var memStream = new MemoryStream();

            // Act
            await sut.DownloadModelAsync(runId, memStream);

            memStream.Seek(0, SeekOrigin.Begin);

            // Assert
            Encoding.Default.GetString(memStream.ToArray()).Should().Be("test");
        }
 public void TestInitialize()
 {
     this.mockFileSystem = new MockFileSystem();
     sut = new LocalFileModelRepository(mockFileSystem, new ModelPathGenerator());
 }
        public void TestInitialize()
        {
            var destinationFolder = @"C:\mlops";

            this.sut = new LocalFileModelRepository(new FileSystem(), new ModelPathGenerator(), destinationFolder);
        }