Beispiel #1
0
        public void Setup()
        {
            this.rootPath = $"{TestContext.CurrentContext.TestDirectory}/{Path.GetRandomFileName()}";
            Directory.CreateDirectory(this.rootPath);
            this.sharedLogDirectory = $"{this.rootPath}/SharedLogs";
            Directory.CreateDirectory(this.sharedLogDirectory);

            this.original = new FasterTestInstance();
            this.clone    = new FasterTestInstance();
        }
Beispiel #2
0
        public void Setup()
        {
            this.rootPath = TestUtils.MethodTestDir;
            TestUtils.RecreateDirectory(this.rootPath);
            this.sharedLogDirectory = $"{this.rootPath}/SharedLogs";
            Directory.CreateDirectory(this.sharedLogDirectory);

            this.original = new FasterTestInstance();
            this.clone    = new FasterTestInstance();
        }
Beispiel #3
0
        private void Test(FasterTestInstance fasterInstance, Guid checkpointToken)
        {
            var checkpointInfo = default(HybridLogRecoveryInfo);

            checkpointInfo.Recover(checkpointToken,
                                   new DeviceLogCommitCheckpointManager(
                                       new LocalStorageNamedDeviceFactory(),
                                       new DefaultCheckpointNamingScheme(
                                           new DirectoryInfo(fasterInstance.CheckpointDirectory).FullName)));

            // Create array for reading
            var inputArray = new AdInput[numUniqueKeys];

            for (int i = 0; i < numUniqueKeys; i++)
            {
                inputArray[i].adId.adId           = i;
                inputArray[i].numClicks.numClicks = 0;
            }

            var input  = default(AdInput);
            var output = default(Output);

            using var session = fasterInstance.Faster.NewSession(new Functions());
            // Issue read requests
            for (var i = 0; i < numUniqueKeys; i++)
            {
                var status = session.Read(ref inputArray[i].adId, ref input, ref output, Empty.Default, i);
                Assert.IsTrue(status == Status.OK);
                inputArray[i].numClicks = output.value;
            }

            // Complete all pending requests
            session.CompletePending(true);


            // Compute expected array
            long[] expected = new long[numUniqueKeys];
            foreach (var guid in checkpointInfo.continueTokens.Keys)
            {
                var sno = checkpointInfo.continueTokens[guid].UntilSerialNo;
                for (long i = 0; i <= sno; i++)
                {
                    var id = i % numUniqueKeys;
                    expected[id]++;
                }
            }

            int threadCount  = 1; // single threaded test
            int numCompleted = threadCount - checkpointInfo.continueTokens.Count;

            for (int t = 0; t < numCompleted; t++)
            {
                var sno = numOps;
                for (long i = 0; i < sno; i++)
                {
                    var id = i % numUniqueKeys;
                    expected[id]++;
                }
            }

            // Assert that expected is same as found
            for (long i = 0; i < numUniqueKeys; i++)
            {
                Assert.IsTrue(
                    expected[i] == inputArray[i].numClicks.numClicks,
                    "Debug error for AdId {0}: Expected ({1}), Found({2})", inputArray[i].adId.adId, expected[i], inputArray[i].numClicks.numClicks);
            }
        }
        private void Test(FasterTestInstance fasterInstance, Guid checkpointToken)
        {
            var checkpointInfo = default(HybridLogRecoveryInfo);

            Assert.IsTrue(checkpointInfo.Recover(checkpointToken, new DirectoryConfiguration(fasterInstance.CheckpointDirectory)));

            // Create array for reading
            var inputArray = new Input[numUniqueKeys];

            for (int i = 0; i < numUniqueKeys; i++)
            {
                inputArray[i].adId.adId           = i;
                inputArray[i].numClicks.numClicks = 0;
            }

            var input  = default(Input);
            var output = default(Output);

            // Issue read requests
            for (var i = 0; i < numUniqueKeys; i++)
            {
                var status = fasterInstance.Faster.Read(ref inputArray[i].adId, ref input, ref output, Empty.Default, i);
                Assert.IsTrue(status == Status.OK);
                inputArray[i].numClicks = output.value;
            }

            // Complete all pending requests
            fasterInstance.Faster.CompletePending(true);


            // Compute expected array
            long[] expected = new long[numUniqueKeys];
            foreach (var guid in checkpointInfo.continueTokens.Keys)
            {
                var sno = checkpointInfo.continueTokens[guid];
                for (long i = 0; i <= sno; i++)
                {
                    var id = i % numUniqueKeys;
                    expected[id]++;
                }
            }

            int threadCount  = 1; // single threaded test
            int numCompleted = threadCount - checkpointInfo.continueTokens.Count;

            for (int t = 0; t < numCompleted; t++)
            {
                var sno = numOps;
                for (long i = 0; i < sno; i++)
                {
                    var id = i % numUniqueKeys;
                    expected[id]++;
                }
            }

            // Assert that expected is same as found
            for (long i = 0; i < numUniqueKeys; i++)
            {
                Assert.IsTrue(
                    expected[i] == inputArray[i].numClicks.numClicks,
                    "Debug error for AdId {0}: Expected ({1}), Found({2})", inputArray[i].adId.adId, expected[i], inputArray[i].numClicks.numClicks);
            }
        }