Merge pull request #3991 from sfc-gh-almiller/fdb3-in-joshua

Ignore old binaries before 4.x when running restarting tests
This commit is contained in:
Trevor Clinkenbeard 2020-10-29 12:41:48 -07:00 committed by GitHub
commit 731073bd52
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 35 additions and 3 deletions

View File

@ -22,6 +22,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Xml.Linq;
using System.IO;
@ -148,7 +149,7 @@ namespace SummarizeTest
{
var xout = new XElement("TestHarnessError",
new XAttribute("Severity", (int)Magnesium.Severity.SevError),
new XAttribute("ErrorMessage", e.Message));
new XAttribute("ErrorMessage", e.ToString()));
AppendXmlMessageToSummary("summary.xml", xout, true);
throw;
@ -214,6 +215,30 @@ namespace SummarizeTest
return ((System.Collections.IStructuralComparable)version1).CompareTo(version2, System.Collections.Generic.Comparer<int>.Default) >= 0;
}
static bool versionLessThan(string ver1, string ver2) {
return !versionGreaterThanOrEqual(ver1, ver2);
}
static string getFdbserverVersion(string fdbserverName) {
using (var process = new System.Diagnostics.Process())
{
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.FileName = fdbserverName;
process.StartInfo.Arguments = "--version";
process.StartInfo.RedirectStandardError = true;
process.Start();
var output = process.StandardOutput.ReadToEnd();
// If the process finished successfully, we call the parameterless WaitForExit to ensure that output buffers get flushed
process.WaitForExit();
var match = Regex.Match(output, @"v(\d+\.\d+\.\d+)");
if (match.Groups.Count < 1) return "";
return match.Groups[1].Value;
}
}
static int Run(string fdbserverName, string tlsPluginFile, string testFolder, string summaryFileName, string errorFileName, string runDir, string oldBinaryFolder, bool useValgrind, int maxTries, bool traceToStdout = false, string tlsPluginFile_5_1 = "")
{
int seed = random.Next(1000000000);
@ -264,16 +289,23 @@ namespace SummarizeTest
}
uniqueFiles = uniqueFileSet.ToArray();
testFile = random.Choice(uniqueFiles);
string oldBinaryVersionLowerBound = "0.0.0";
// The on-disk format changed in 4.0.0, and 5.x can't load files from 3.x.
string oldBinaryVersionLowerBound = "4.0.0";
string lastFolderName = Path.GetFileName(Path.GetDirectoryName(testFile));
if (lastFolderName.Contains("from_") || lastFolderName.Contains("to_")) // Only perform upgrade/downgrade tests from certain versions
{
oldBinaryVersionLowerBound = lastFolderName.Split('_').Last();
}
string oldBinaryVersionUpperBound = getFdbserverVersion(fdbserverName);
if (versionGreaterThanOrEqual("4.0.0", oldBinaryVersionUpperBound)) {
// If the binary under test is from 3.x, then allow upgrade tests from 3.x binaries.
oldBinaryVersionLowerBound = "0.0.0";
}
string[] currentBinary = { fdbserverName };
IEnumerable<string> oldBinaries = Array.FindAll(
Directory.GetFiles(oldBinaryFolder),
x => versionGreaterThanOrEqual(Path.GetFileName(x).Split('-').Last(), oldBinaryVersionLowerBound));
x => versionGreaterThanOrEqual(Path.GetFileName(x).Split('-').Last(), oldBinaryVersionLowerBound)
&& versionLessThan(Path.GetFileName(x).Split('-').Last(), oldBinaryVersionUpperBound));
oldBinaries = oldBinaries.Concat(currentBinary);
oldServerName = random.Choice(oldBinaries.ToList<string>());
}