Exemple #1
0
        public void Setup()
        {
            var           bogus = new Bogus.Randomizer();
            BufferSegment headerBufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            var           headerPage          = HeaderPage.CreateHeaderPage(headerBufferSegment);
            BufferSegment bufferSegment       = new BufferSegment(Constants.PAGE_SIZE);
            PageHeader    header = new PageHeader(1, PageType.Data);

            header.ToBuffer(bufferSegment.Span, 0);
            File.Delete(@"C:\Neuer Ordner\test.db");
            PageService pageService = new PageService(FileDiskService.Create(new DatatentSettings()
            {
                InMemory = false, Path = @"C:\Neuer Ordner\test.db"
            }));

            _dataService = new DataService(new NopCompressionService(), pageService);

            _objects = new List <TestObject>(50);
            foreach (var i in Enumerable.Range(0, 50))
            {
                TestObject testObject = new TestObject();
                testObject.IntProp    = bogus.Int();
                testObject.StringProp = bogus.String2(1000);
                _objects.Add(testObject);
            }
        }
        public async Task SimpleInsertAndGetWithCheckpointTest()
        {
            var bogus = new Bogus.Randomizer();

            using BufferSegment headerBufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            var headerPage = HeaderPage.CreateHeaderPage(headerBufferSegment);

            using BufferSegment bufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            PageHeader header = new PageHeader(1, PageType.Data);

            header.ToBuffer(bufferSegment.Span, 0);
            PageService pageService = new PageService(new InMemoryDiskService());
            DataService dataService = new DataService(new NopCompressionService(), pageService);
            TestObject  testObject  = new TestObject();

            testObject.IntProp    = bogus.Int();
            testObject.StringProp = bogus.String2(1000);
            var address = await dataService.Insert(testObject);

            address.SlotId.ShouldBe((byte)1);
            address.PageId.ShouldBe((ushort)1);
            await pageService.CheckPoint();

            var obj = await dataService.Get <TestObject>(address);

            obj.ShouldNotBeNull();
            obj.ShouldBe(testObject);

            // there should be no second page
            var secondPage = await pageService.GetPage <BasePage>(2);

            secondPage.ShouldBeNull();
        }
        public async Task LargeInsertTest()
        {
            var bogus = new Bogus.Randomizer();

            using BufferSegment headerBufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            var headerPage = HeaderPage.CreateHeaderPage(headerBufferSegment);

            using BufferSegment bufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            PageHeader header = new PageHeader(1, PageType.Data);

            header.ToBuffer(bufferSegment.Span, 0);
            PageService pageService = new PageService(new InMemoryDiskService());
            DataService dataService = new DataService(new NopCompressionService(), pageService);
            TestObject  testObject  = new TestObject();

            testObject.IntProp    = bogus.Int();
            testObject.StringProp = bogus.String2(1000);

            for (int i = 0; i < 10000; i++)
            {
                var address = await dataService.Insert(testObject);

                address.SlotId.ShouldBeGreaterThan((byte)0);
                address.PageId.ShouldBeGreaterThan((byte)0);

                if (i > 254)
                {
                    address.PageId.ShouldBeGreaterThan((uint)1);
                }

                var resObject = await dataService.Get <TestObject>(address);

                resObject.ShouldBe(testObject);
            }
        }
        public async Task InsertMaxAmountOfEntriesPerPageTest()
        {
            var bogus = new Bogus.Randomizer();

            using BufferSegment headerBufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            var headerPage = HeaderPage.CreateHeaderPage(headerBufferSegment);

            using BufferSegment bufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            PageHeader header = new PageHeader(1, PageType.Data);

            header.ToBuffer(bufferSegment.Span, 0);
            PageService pageService = new PageService(new InMemoryDiskService());
            DataService dataService = new DataService(new NopCompressionService(), pageService);

            for (int i = 0; i < 300; i++)
            {
                var address = await dataService.Insert("ABC");

                address.SlotId.ShouldBeGreaterThan((byte)0);
                address.PageId.ShouldBeGreaterThan((byte)0);

                if (i > 254)
                {
                    address.PageId.ShouldBeGreaterThan((uint)1);
                }

                var resObject = await dataService.Get <string>(address);

                resObject.ShouldBe("ABC");
            }
        }
Exemple #5
0
        public async void GetFreeDataPageTest_NewPage()
        {
            using BufferSegment headerBufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            var headerPage = HeaderPage.CreateHeaderPage(headerBufferSegment);

            using BufferSegment bufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            PageHeader header = new PageHeader(0, PageType.Data);

            header.ToBuffer(bufferSegment.Span, 0);

            PageService pageService = new PageService(new InMemoryDiskService());
            await pageService.Init();

            var dataPage = await pageService.GetDataPageWithFreeSpace();

            var dataPage2 = await pageService.GetDataPageWithFreeSpace();

            dataPage.Id.ShouldBe(dataPage2.Id);
        }
        public async Task SimpleInsertTest()
        {
            var bogus = new Bogus.Randomizer();

            using BufferSegment headerBufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            var headerPage = HeaderPage.CreateHeaderPage(headerBufferSegment);

            using BufferSegment bufferSegment = new BufferSegment(Constants.PAGE_SIZE);
            PageHeader header = new PageHeader(1, PageType.Data);

            header.ToBuffer(bufferSegment.Span, 0);
            PageService pageService = new PageService(new InMemoryDiskService());
            DataService dataService = new DataService(new NopCompressionService(), pageService);

            TestObject testObject = new TestObject();

            testObject.IntProp    = bogus.Int();
            testObject.StringProp = bogus.String2(1000);
            var address = await dataService.Insert(testObject);

            address.SlotId.ShouldBe((byte)1);
            address.PageId.ShouldBe((ushort)1);
        }