Beispiel #1
0
        public async Task <bool> TargetIsOutdated(CancellationToken cancelTkn)
        {
            if (!ValidateTargetFile())
            {
                return(false);
            }
            _remotePkg = null;

            var localPkg = _file.ToR2Package(TargetPath);
            var fName    = localPkg.Filename;

            SetStatus($"Getting packages named “{fName}” ...");
            var list = await _remote.ListByFilename(fName, cancelTkn);

            if (list.Count == 0)
            {
                throw Fault
                      .NoItems($"Server packages named “{fName}”");
            }

            if (list.Count > 1)
            {
                throw Fault
                      .NonSolo($"Server packages named “{fName}”", list.Count);
            }

            _remotePkg = list.Single();
            return(_remotePkg.Hash != localPkg.Hash);
        }
        public async void CanPatchPackage()
        {
            (await _sut.EnableWriteAccess(_creds)).Should().BeTrue();
            var pkg = UpdatedTestPackage2();

            var list = await _pkgs.ListByFilename(pkg.Filename, new CancellationToken());

            list.Should().HaveCount(1);
            list[0].Hash.Should().NotBe(pkg.Hash);

            var reply = await _sut.PatchNode(pkg, new CancellationToken());

            reply.IsSuccessful.Should().BeTrue();

            list = await _pkgs.ListByFilename(pkg.Filename, new CancellationToken());

            list.Should().HaveCount(1);
            list[0].Filename.Should().Be(pkg.Filename);
            list[0].Hash.Should().Be(pkg.Hash);
        }
Beispiel #3
0
        public async Task <bool> IsUploadable(R2Package localPkg, CancellationToken cancelTkn)
        {
            if (localPkg == null)
            {
                ReasonWhyNot = $"“{nameof(localPkg)}” argument is NULL.";
                return(false);
            }

            var nme = localPkg.Filename;

            if (!localPkg.FileFound)
            {
                ReasonWhyNot = $"“{nme}” not found in {localPkg.LocalDir}.";
                return(false);
            }

            var list = await _pkgs.ListByFilename(nme, cancelTkn);

            if (list == null)
            {
                ReasonWhyNot = "List from server is NULL.";
                return(false);
            }
            if (list.Count < 1)
            {
                ReasonWhyNot = $"Package is not registered: “{nme}”.";
                return(false);
            }
            if (list.Count > 1)
            {
                ReasonWhyNot = $"Package is registered {list.Count} times : “{nme}”.";
                return(false);
            }
            LastPackage = list[0];

            if (LastPackage.Hash == localPkg.Hash)
            {
                ReasonWhyNot = "Local hash matches remote hash.";
                return(false);
            }

            return(true);
        }
Beispiel #4
0
        public async void TestPackage2_6MB(double srcMB, double maxMB, int parts)
        {
            var pkg = CreateFileWithSizeMB(srcMB);

            await EnableWriteAccess();

            await _parts.DeleteByPkgHash(pkg, new CancellationToken());

            _sut.MaxPartSizeMB = maxMB;
            await _sut.StartUpload(pkg, "test upload");

            var list1 = await _parts.ListByPkgHash(pkg, new CancellationToken());

            list1.Should().HaveCount(parts);

            var pkgs = await _pkgs.ListByFilename(pkg.Filename, new CancellationToken());

            pkgs.Should().HaveCount(1);
            pkgs[0].Hash.Should().Be(pkg.Hash);
        }