public async Task MountsOnlyOnce() { var meshPersistentFileSystem = new MeshPersistentFileSystem(_systemEnvironment, _client.Object, _storageClient.Object); Assert.False(meshPersistentFileSystem.GetStatus(out var statusMessage)); Assert.True(string.IsNullOrEmpty(statusMessage)); // Mount once var mountResult = await meshPersistentFileSystem.MountFileShare(); Assert.True(mountResult); Assert.True(meshPersistentFileSystem.GetStatus(out statusMessage)); Assert.True(string.IsNullOrEmpty(statusMessage)); Assert.True(!string.IsNullOrEmpty(meshPersistentFileSystem.GetDeploymentsPath())); //Mount again mountResult = await meshPersistentFileSystem.MountFileShare(); Assert.True(mountResult); Assert.True(meshPersistentFileSystem.GetStatus(out statusMessage)); Assert.True(statusMessage.Contains("mounted already", StringComparison.Ordinal)); Assert.True(!string.IsNullOrEmpty(meshPersistentFileSystem.GetDeploymentsPath())); // Assert share was mounted was called only once even if mount was called twice _storageClient.Verify(s => s.CreateFileShare(It.IsAny <string>(), ConnectionString, It.IsAny <string>()), Times.Once); _client.Verify(c => c.MountCifs(ConnectionString, It.IsAny <string>(), Constants.KuduFileShareMountPath), Times.Once); }
public async Task MountShareMounted() { var meshPersistentFileSystem = new MeshPersistentFileSystem(_systemEnvironment, _client.Object, _storageClient.Object); Assert.False(meshPersistentFileSystem.GetStatus(out var statusMessage)); Assert.True(string.IsNullOrEmpty(statusMessage)); var mountResult = await meshPersistentFileSystem.MountFileShare(); Assert.True(mountResult); Assert.True(meshPersistentFileSystem.GetStatus(out statusMessage)); Assert.True(string.IsNullOrEmpty(statusMessage)); Assert.True(!string.IsNullOrEmpty(meshPersistentFileSystem.GetDeploymentsPath())); _storageClient.Verify(s => s.CreateFileShare(It.IsAny <string>(), ConnectionString, It.IsAny <string>()), Times.Once); _client.Verify(c => c.MountCifs(ConnectionString, It.IsAny <string>(), Constants.KuduFileShareMountPath), Times.Once); }
public async Task MountsOnLinuxConsumptionOnly() { // Container name will be null on non-Linux consumption environments _systemEnvironment.SetEnvironmentVariable(Constants.ContainerName, null); var meshPersistentFileSystem = new MeshPersistentFileSystem(_systemEnvironment, _client.Object, _storageClient.Object); Assert.False(meshPersistentFileSystem.GetStatus(out string _)); var mountResult = await meshPersistentFileSystem.MountFileShare(); Assert.False(mountResult); Assert.False(meshPersistentFileSystem.GetStatus(out var statusMessage)); Assert.True(statusMessage.Contains("only supported on Linux consumption environment", StringComparison.Ordinal)); Assert.True(string.IsNullOrEmpty(meshPersistentFileSystem.GetDeploymentsPath())); _storageClient.Verify(s => s.CreateFileShare(It.IsAny <string>(), ConnectionString, It.IsAny <string>()), Times.Never); _client.Verify(c => c.MountCifs(ConnectionString, It.IsAny <string>(), Constants.KuduFileShareMountPath), Times.Never); }
public async Task MountsOnlyIfStorageAccountConfigured() { // Remove storage account _systemEnvironment.SetEnvironmentVariable(Constants.AzureWebJobsStorage, null); var meshPersistentFileSystem = new MeshPersistentFileSystem(_systemEnvironment, _client.Object, _storageClient.Object); Assert.False(meshPersistentFileSystem.GetStatus(out string _)); var mountResult = await meshPersistentFileSystem.MountFileShare(); Assert.False(mountResult); Assert.False(meshPersistentFileSystem.GetStatus(out var statusMessage)); Assert.True(statusMessage.Contains($"{Constants.AzureWebJobsStorage} is empty", StringComparison.Ordinal)); Assert.True(string.IsNullOrEmpty(meshPersistentFileSystem.GetDeploymentsPath())); _storageClient.Verify(s => s.CreateFileShare(It.IsAny <string>(), ConnectionString, It.IsAny <string>()), Times.Never); _client.Verify(c => c.MountCifs(ConnectionString, It.IsAny <string>(), Constants.KuduFileShareMountPath), Times.Never); }