public void Verify_Multiple_AllowedDirectories_Via_AppSetting_Unix() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } IEnvironment testEnv = new TestEnvironment(); ILogger <MemoryMappedFileAccessor> logger = NullLogger <MemoryMappedFileAccessor> .Instance; MemoryMappedFileAccessorUnix mapAccessor = new MemoryMappedFileAccessorUnix(logger, testEnv); List <string> directories = new List <string>() { "/tmp/shm1", "/tmp/shm2", "/tmp/shm3", }; testEnv.SetEnvironmentVariable(RpcWorkerConstants.FunctionsUnixSharedMemoryDirectories, string.Join(",", directories)); List <string> allowedDirectories = mapAccessor.GetAllowedDirectories(); Assert.All(allowedDirectories, (x) => allowedDirectories.Contains(x)); Assert.Equal(directories.Count, allowedDirectories.Count); // Test with a list that does not have the right delimiter; it will be returned as a single directory string directory = "/tmp/shm-/tmp/shm"; testEnv.SetEnvironmentVariable(RpcWorkerConstants.FunctionsUnixSharedMemoryDirectories, directory); allowedDirectories = mapAccessor.GetAllowedDirectories(); Assert.Contains(directory, allowedDirectories); Assert.Equal(1, allowedDirectories.Count); }
public void Verify_AllowedDirectory_Default_Unix() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } IEnvironment testEnv = new TestEnvironment(); ILogger <MemoryMappedFileAccessor> logger = NullLogger <MemoryMappedFileAccessor> .Instance; MemoryMappedFileAccessorUnix mapAccessor = new MemoryMappedFileAccessorUnix(logger, testEnv); List <string> allowedDirectories = mapAccessor.GetAllowedDirectories(); Assert.Equal(SharedMemoryConstants.TempDirs, allowedDirectories); }
public void Verify_Single_AllowedDirectory_Via_AppSetting_Unix() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } IEnvironment testEnv = new TestEnvironment(); ILogger <MemoryMappedFileAccessor> logger = NullLogger <MemoryMappedFileAccessor> .Instance; MemoryMappedFileAccessorUnix mapAccessor = new MemoryMappedFileAccessorUnix(logger, testEnv); string directory = "/tmp/shm"; testEnv.SetEnvironmentVariable(RpcWorkerConstants.FunctionsUnixSharedMemoryDirectories, directory); List <string> allowedDirectories = mapAccessor.GetAllowedDirectories(); Assert.Contains(directory, allowedDirectories); Assert.Equal(1, allowedDirectories.Count); }
public void Use_AppSetting_Directory_Unix() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } IEnvironment testEnv = new TestEnvironment(); ILogger <MemoryMappedFileAccessor> logger = NullLogger <MemoryMappedFileAccessor> .Instance; string directory = "/tmp/shm"; testEnv.SetEnvironmentVariable(RpcWorkerConstants.FunctionsUnixSharedMemoryDirectories, directory); MemoryMappedFileAccessorUnix mapAccessor = new MemoryMappedFileAccessorUnix(logger, testEnv); string expectedDirectory = $"/tmp/shm/{SharedMemoryConstants.TempDirSuffix}"; Assert.Single(mapAccessor.ValidDirectories); Assert.Contains(expectedDirectory, mapAccessor.ValidDirectories); }
public void Verify_Single_AlreadyExistent_ValidDirectory_Via_AppSetting_Unix() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } IEnvironment testEnv = new TestEnvironment(); ILogger <MemoryMappedFileAccessor> logger = NullLogger <MemoryMappedFileAccessor> .Instance; MemoryMappedFileAccessorUnix mapAccessor = new MemoryMappedFileAccessorUnix(logger, testEnv); string directory = "/tmp/shm1"; testEnv.SetEnvironmentVariable(RpcWorkerConstants.FunctionsUnixSharedMemoryDirectories, directory); // The directory should already be there before MemoryMappedFileAccessor checks for it string directoryWithSuffix = $"{directory}/{SharedMemoryConstants.TempDirSuffix}"; DirectoryInfo dirInfo = Directory.CreateDirectory(directoryWithSuffix); DateTime oldCreationTime = dirInfo.CreationTimeUtc; // Sleep for 10ms so that the timestamp on when we created the directory above and when MemoryMappedFileAccessor creates the directory has significant difference. // This will make it possible to check if the directory was created again by MemoryMappedFileAccessor by comparing the timestamps. Thread.Sleep(10); List <string> validDirectories = mapAccessor.GetValidDirectories(); Assert.Contains(directoryWithSuffix, validDirectories); Assert.Equal(1, validDirectories.Count); // Now check if MemoryMappedFileAccessor had cleaned and created the directory again DateTime newCreationTime = new DirectoryInfo(directory).CreationTimeUtc; Assert.True(newCreationTime > oldCreationTime); // Cleanup Directory.Delete(directoryWithSuffix, recursive: true); }
public void Verify_Single_NonExistent_ValidDirectory_Via_AppSetting_Unix() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { return; } IEnvironment testEnv = new TestEnvironment(); ILogger <MemoryMappedFileAccessor> logger = NullLogger <MemoryMappedFileAccessor> .Instance; MemoryMappedFileAccessorUnix mapAccessor = new MemoryMappedFileAccessorUnix(logger, testEnv); string directory = "/tmp/shm"; testEnv.SetEnvironmentVariable(RpcWorkerConstants.FunctionsUnixSharedMemoryDirectories, directory); List <string> validDirectories = mapAccessor.GetValidDirectories(); string expectedDirectory = $"{directory}/{SharedMemoryConstants.TempDirSuffix}"; Assert.Contains(expectedDirectory, validDirectories); Assert.Equal(1, validDirectories.Count); // Cleanup Directory.Delete(expectedDirectory, recursive: true); }