public void EpochToDateToEpoch() { long time = 15237623489; long converted = EpochConverter.ToUnixEpochSeconds(EpochConverter.FromUnixEpochSeconds(time)); time.ShouldEqual(converted); }
public void DateToEpochToDate() { DateTime time = new DateTime(2018, 12, 18, 8, 12, 13, DateTimeKind.Utc); DateTime converted = EpochConverter.FromUnixEpochSeconds(EpochConverter.ToUnixEpochSeconds(time)); time.ShouldEqual(converted); }
protected void SaveLastRunTimeToFile() { if (!this.Context.FileSystem.TryWriteTempFileAndRename( this.LastRunTimeFilePath, EpochConverter.ToUnixEpochSeconds(DateTime.UtcNow).ToString(), out Exception handledException)) { this.Context.Tracer.RelatedError(this.CreateEventMetadata(handledException), "Failed to record run time"); } }
public bool TryPauseMaintenanceUntil(DateTime time, out string errorMessage) { if (!this.TryCreateRepoRegistryDirectory(out errorMessage)) { return(false); } string timeFileName = this.GetMaintenanceDelayFilePath(); long seconds = EpochConverter.ToUnixEpochSeconds(time); if (!this.fileSystem.TryWriteAllText(timeFileName, seconds.ToString())) { errorMessage = $"Failed to write epoch {seconds} to '{timeFileName}'"; return(false); } errorMessage = null; return(true); }
public void FixedDates() { DateTime[] times = new DateTime[] { new DateTime(2018, 12, 13, 20, 53, 30, DateTimeKind.Utc), new DateTime(2035, 1, 3, 5, 0, 59, DateTimeKind.Utc), new DateTime(1989, 12, 31, 23, 59, 59, DateTimeKind.Utc) }; long[] epochs = new long[] { 1544734410, 2051413259, 631151999 }; for (int i = 0; i < times.Length; i++) { long epoch = EpochConverter.ToUnixEpochSeconds(times[i]); epoch.ShouldEqual(epochs[i]); DateTime time = EpochConverter.FromUnixEpochSeconds(epochs[i]); time.ShouldEqual(times[i]); } }
private void TestSetup(DateTime lastRun) { string lastRunTime = EpochConverter.ToUnixEpochSeconds(lastRun).ToString(); this.gitProcess = new MockGitProcess(); // Create enlistment using git process GVFSEnlistment enlistment = new MockGVFSEnlistment(this.gitProcess); // Create a last run time file MockFile timeFile = new MockFile(Path.Combine(enlistment.GitObjectsRoot, "info", PackfileMaintenanceStep.PackfileLastRunFileName), lastRunTime); // Create info directory to hold last run time file MockDirectory info = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "info"), null, new List <MockFile>() { timeFile }); // Create pack info MockDirectory pack = new MockDirectory( enlistment.GitPackRoot, null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitPackRoot, "pack-1.pack"), "one"), new MockFile(Path.Combine(enlistment.GitPackRoot, "pack-1.idx"), "1"), new MockFile(Path.Combine(enlistment.GitPackRoot, "pack-2.pack"), "two"), new MockFile(Path.Combine(enlistment.GitPackRoot, "pack-2.idx"), "2"), new MockFile(Path.Combine(enlistment.GitPackRoot, "pack-3.pack"), "three"), new MockFile(Path.Combine(enlistment.GitPackRoot, "pack-3.idx"), "3"), new MockFile(Path.Combine(enlistment.GitPackRoot, KeepName), string.Empty), new MockFile(Path.Combine(enlistment.GitPackRoot, StaleIdxName), "4"), }); // Create git objects directory MockDirectory gitObjectsRoot = new MockDirectory(enlistment.GitObjectsRoot, new List <MockDirectory>() { info, pack }, null); // Add object directory to file System List <MockDirectory> directories = new List <MockDirectory>() { gitObjectsRoot }; PhysicalFileSystem fileSystem = new MockFileSystem(new MockDirectory(enlistment.EnlistmentRoot, directories, null)); // Create and return Context this.tracer = new MockTracer(); this.context = new GVFSContext(this.tracer, fileSystem, repository: null, enlistment: enlistment); this.gitProcess.SetExpectedCommandResult( this.ExpireCommand, () => new GitProcess.Result(string.Empty, string.Empty, GitProcess.Result.SuccessCode)); this.gitProcess.SetExpectedCommandResult( this.RepackCommand, () => new GitProcess.Result(string.Empty, string.Empty, GitProcess.Result.SuccessCode)); }
private void TestSetup(DateTime lastRun) { string lastRunTime = EpochConverter.ToUnixEpochSeconds(lastRun).ToString(); // Create GitProcess this.gitProcess = new MockGitProcess(); this.gitProcess.SetExpectedCommandResult( PrunePackedCommand, () => new GitProcess.Result(string.Empty, string.Empty, GitProcess.Result.SuccessCode)); // Create enlistment using git process ScalarEnlistment enlistment = new MockScalarEnlistment(this.gitProcess); string packPrefix = Path.Combine(enlistment.GitPackRoot, "from-loose"); this.packCommand = $"pack-objects {packPrefix} --non-empty --window=0 --depth=0 -q"; this.gitProcess.SetExpectedCommandResult( this.packCommand, () => new GitProcess.Result(string.Empty, string.Empty, GitProcess.Result.SuccessCode)); // Create a last run time file MockFile timeFile = new MockFile(Path.Combine(enlistment.GitObjectsRoot, "info", LooseObjectsStep.LooseObjectsLastRunFileName), lastRunTime); // Create info directory to hold last run time file MockDirectory infoRoot = new MockDirectory(Path.Combine(enlistment.GitObjectsRoot, "info"), null, new List <MockFile>() { timeFile }); // Create Hex Folder 1 with 1 File MockDirectory hex1 = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "AA"), null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitObjectsRoot, "AA", "1156f4f2b850673090c285289ea8475d629fe1"), "one") }); // Create Hex Folder 2 with 2 Files MockDirectory hex2 = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "F1"), null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitObjectsRoot, "F1", "1156f4f2b850673090c285289ea8475d629fe2"), "two"), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "F1", "1156f4f2b850673090c285289ea8475d629fe3"), "three") }); // Create NonHex Folder with 4 Files MockDirectory nonhex = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "ZZ"), null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "1156f4f2b850673090c285289ea8475d629fe4"), "4"), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "1156f4f2b850673090c285289ea8475d629fe5"), "5"), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "1156f4f2b850673090c285289ea8475d629fe6"), "6"), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "1156f4f2b850673090c285289ea8475d629fe7"), "7") }); MockDirectory pack = new MockDirectory( enlistment.GitPackRoot, null, new List <MockFile>()); // Create git objects directory MockDirectory gitObjectsRoot = new MockDirectory(enlistment.GitObjectsRoot, new List <MockDirectory>() { infoRoot, hex1, hex2, nonhex, pack }, null); // Add object directory to file System List <MockDirectory> directories = new List <MockDirectory>() { gitObjectsRoot }; PhysicalFileSystem fileSystem = new MockFileSystem(new MockDirectory(enlistment.EnlistmentRoot, directories, null)); // Create and return Context this.tracer = new MockTracer(); this.context = new ScalarContext(this.tracer, fileSystem, enlistment: enlistment); }
private void TestSetup(DateTime lastRun) { string lastRunTime = EpochConverter.ToUnixEpochSeconds(lastRun).ToString(); // Create GitProcess this.gitProcess = new MockGitProcess(); this.gitProcess.SetExpectedCommandResult( PrunePackedCommand, () => new GitProcess.Result(string.Empty, string.Empty, GitProcess.Result.SuccessCode)); // Create enlistment using git process GVFSEnlistment enlistment = new MockGVFSEnlistment(this.gitProcess); // Create a last run time file MockFile timeFile = new MockFile(Path.Combine(enlistment.GitObjectsRoot, "info", LooseObjectsStep.LooseObjectsLastRunFileName), lastRunTime); // Create info directory to hold last run time file MockDirectory infoRoot = new MockDirectory(Path.Combine(enlistment.GitObjectsRoot, "info"), null, new List <MockFile>() { timeFile }); // Create Hex Folder 1 with 1 File MockDirectory hex1 = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "AA"), null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitObjectsRoot, "AA", "test"), string.Empty) }); // Create Hex Folder 2 with 2 Files MockDirectory hex2 = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "F1"), null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitObjectsRoot, "F1", "test1"), string.Empty), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "F1", "test2"), string.Empty) }); // Create NonHex Folder with 4 Files MockDirectory nonhex = new MockDirectory( Path.Combine(enlistment.GitObjectsRoot, "ZZ"), null, new List <MockFile>() { new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "test1"), string.Empty), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "test2"), string.Empty), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "test3"), string.Empty), new MockFile(Path.Combine(enlistment.GitObjectsRoot, "ZZ", "test4"), string.Empty) }); // Create git objects directory MockDirectory gitObjectsRoot = new MockDirectory(enlistment.GitObjectsRoot, new List <MockDirectory>() { infoRoot, hex1, hex2, nonhex }, null); // Add object directory to file System List <MockDirectory> directories = new List <MockDirectory>() { gitObjectsRoot }; PhysicalFileSystem fileSystem = new MockFileSystem(new MockDirectory(enlistment.EnlistmentRoot, directories, null)); // Create and return Context this.tracer = new MockTracer(); this.context = new GVFSContext(this.tracer, fileSystem, repository: null, enlistment: enlistment); }