Example #1
0
        private async Task <bool> UpdateNeeded(string targetVersion, CancellationToken token)
        {
            // when talk to old version tfs server, always prefer latest package.
            // old server won't send target version as part of update message.
            if (string.IsNullOrEmpty(targetVersion))
            {
                var packages = await _agentServer.GetPackagesAsync(_packageType, _platform, 1, token);

                if (packages == null || packages.Count == 0)
                {
                    Trace.Info($"There is no package for {_packageType} and {_platform}.");
                    return(false);
                }

                _targetPackage = packages.FirstOrDefault();
            }
            else
            {
                _targetPackage = await _agentServer.GetPackageAsync(_packageType, _platform, targetVersion, token);

                if (_targetPackage == null)
                {
                    Trace.Info($"There is no package for {_packageType} and {_platform} with version {targetVersion}.");
                    return(false);
                }
            }

            Trace.Info($"Version '{_targetPackage.Version}' of '{_targetPackage.Type}' package available in server.");
            PackageVersion serverVersion = new PackageVersion(_targetPackage.Version);

            Trace.Info($"Current running agent version is {BuildConstants.AgentPackage.Version}");
            PackageVersion agentVersion = new PackageVersion(BuildConstants.AgentPackage.Version);

            if (serverVersion.CompareTo(agentVersion) > 0)
            {
                return(true);
            }

            if (AgentKnobs.DisableAgentDowngrade.GetValue(_knobContext).AsBoolean())
            {
                Trace.Info("Agent downgrade disabled, skipping update");
                return(false);
            }

            // Always return true for newer agent versions unless they're exactly equal to enable auto rollback (this feature was introduced after 2.165.0)
            if (serverVersion.CompareTo(agentVersion) != 0)
            {
                _terminal.WriteLine(StringUtil.Loc("AgentDowngrade"));
                return(true);
            }

            return(false);
        }
Example #2
0
        private async Task <bool> UpdateNeeded(string targetVersion, CancellationToken token)
        {
            // when talk to old version server, always prefer latest package.
            // old server won't send target version as part of update message.
            if (string.IsNullOrEmpty(targetVersion))
            {
                var packages = await _runnerServer.GetPackagesAsync(_packageType, _platform, 1, token);

                if (packages == null || packages.Count == 0)
                {
                    Trace.Info($"There is no package for {_packageType} and {_platform}.");
                    return(false);
                }

                _targetPackage = packages.FirstOrDefault();
            }
            else
            {
                _targetPackage = await _runnerServer.GetPackageAsync(_packageType, _platform, targetVersion, token);

                if (_targetPackage == null)
                {
                    Trace.Info($"There is no package for {_packageType} and {_platform} with version {targetVersion}.");
                    return(false);
                }
            }

            Trace.Info($"Version '{_targetPackage.Version}' of '{_targetPackage.Type}' package available in server.");
            PackageVersion serverVersion = new PackageVersion(_targetPackage.Version);

            Trace.Info($"Current running runner version is {BuildConstants.RunnerPackage.Version}");
            PackageVersion runnerVersion = new PackageVersion(BuildConstants.RunnerPackage.Version);

            return(serverVersion.CompareTo(runnerVersion) > 0);
        }
        public int CompareTo(object other)
        {
            if (!(other is ProjectReference))
            {
                return(0);
            }

            var b = (ProjectReference)other;

            var nameComparison = string.Compare(Name, b.Name, StringComparison.InvariantCultureIgnoreCase);

            if (nameComparison != 0)
            {
                return(nameComparison);
            }

            var versionComparison = Version.CompareTo(b.Version);

            if (versionComparison != 0)
            {
                return(versionComparison);
            }

            if (IsPackageReference)
            {
                var packageVersionComparison = PackageVersion.CompareTo(b.PackageVersion);
                if (packageVersionComparison != 0)
                {
                    return(packageVersionComparison);
                }
            }

            return(string.Compare(FullName, b.FullName, StringComparison.Ordinal));
        }
Example #4
0
        public void CompareToEqualTest()
        {
            PackageVersion v1, v2;
            int            result;


            //
            // Prepare the test.
            //
            v1 = new PackageVersion("1.3.7");
            v2 = new PackageVersion(1, 3, 7);

            //
            // Run the test.
            //
            result = v1.CompareTo(v2);

            //
            // Verify the test.
            //
            Assert.AreEqual(v1.Major, v2.Major);
            Assert.AreEqual(v1.Minor, v2.Minor);
            Assert.AreEqual(v1.Revision, v2.Revision);
            Assert.AreEqual(0, result);
        }
        public void IfTwoClassesWithPackage2IsBeforePackage1GiveCompareToOf1()
        {
            var package1 = new PackageVersion();
            var package2 = new PackageVersion();

            package1.Name = "test2";
            package2.Name = "test1";
            Assert.AreEqual(1, package1.CompareTo(package2));
        }
        public void IfTwoClassesWithTheSameNameGiveCompareToOf0()
        {
            var package1 = new PackageVersion();
            var package2 = new PackageVersion();

            package1.Name = "test";
            package2.Name = "test";
            Assert.AreEqual(0, package1.CompareTo(package2));
        }
Example #7
0
        private async Task <bool> UpdateNeeded(CancellationToken token)
        {
            var agentServer = HostContext.GetService <IAgentServer>();
            var packages    = await agentServer.GetPackagesAsync(_packageType, _platform, 1, token);

            if (packages == null || packages.Count == 0)
            {
                Trace.Info($"There is no package for {_packageType} and {_platform}.");
                return(false);
            }

            _latestPackage = packages.FirstOrDefault();
            Trace.Info($"Latest version of '{_latestPackage.Type}' package availiable in server is {_latestPackage.Version}");
            PackageVersion serverVersion = new PackageVersion(_latestPackage.Version);

            Trace.Info($"Current running agent version is {Constants.Agent.Version}");
            PackageVersion agentVersion = new PackageVersion(Constants.Agent.Version);

            return(serverVersion.CompareTo(agentVersion) > 0);
        }
Example #8
0
        public void CompareToGreaterThanRevisionTest()
        {
            PackageVersion v1, v2;
            int            result;


            //
            // Prepare the test.
            //
            v1 = new PackageVersion("1.3.7");
            v2 = new PackageVersion("1.3.5");

            //
            // Run the test.
            //
            result = v1.CompareTo(v2);

            //
            // Verify the test.
            //
            Assert.AreEqual(1, result);
        }
Example #9
0
        public void CompareToLessThanMinorTest()
        {
            PackageVersion v1, v2;
            int            result;


            //
            // Prepare the test.
            //
            v1 = new PackageVersion("1.3.7");
            v2 = new PackageVersion("1.7.1");

            //
            // Run the test.
            //
            result = v1.CompareTo(v2);

            //
            // Verify the test.
            //
            Assert.AreEqual(-1, result);
        }
Example #10
0
        public void CompareToLessThanMigratorStepTest()
        {
            MigratorVersionStep v2;
            PackageVersion      v1;
            int result;


            //
            // Prepare the test.
            //
            v1 = new PackageVersion("1.3.7");
            v2 = new MigratorVersionStep(1, 3, 7, 6);

            //
            // Run the test.
            //
            result = v1.CompareTo(v2);

            //
            // Verify the test.
            //
            Assert.AreEqual(-1, result);
        }
Example #11
0
 public int CompareTo(VersionRange other)
 {
     return(minimum.CompareTo(other.minimum));
 }
Example #12
0
 public int CompareTo(IVersion obj)
 {
     return(PackageVersion.CompareTo(obj.PackageVersion));
 }
Example #13
0
        private async Task<bool> UpdateNeeded(CancellationToken token)
        {
            var agentServer = HostContext.GetService<IAgentServer>();
            var packages = await agentServer.GetPackagesAsync(_packageType, _platform, 1, token);
            if (packages == null || packages.Count == 0)
            {
                Trace.Info($"There is no package for {_packageType} and {_platform}.");
                return false;
            }

            _latestPackage = packages.FirstOrDefault();
            Trace.Info($"Latest version of '{_latestPackage.Type}' package availiable in server is {_latestPackage.Version}");
            PackageVersion serverVersion = new PackageVersion(_latestPackage.Version);

            Trace.Info($"Current running agent version is {Constants.Agent.Version}");
            PackageVersion agentVersion = new PackageVersion(Constants.Agent.Version);

            return serverVersion.CompareTo(agentVersion) > 0;
        }