Beispiel #1
0
        public void AddHeader_Parallel()
        {
            var cache      = new JwtHeaderCache();
            var rawHeaders = new byte[1000][];

            for (int i = 0; i < 1000; i++)
            {
                rawHeaders[i] = new byte[32];
                RandomNumberGenerator.Fill(rawHeaders[i]);
            }

            var p = Parallel.For(0, 100, j =>
            {
                for (int i = 0; i < 1000; i++)
                {
                    cache.AddHeader(rawHeaders[i], new JwtHeader());
                }
            });

            Assert.True(cache.Validate());
            var p2 = Parallel.For(0, 100, j =>
            {
                for (int i = 0; i < 1000; i++)
                {
                    cache.TryGetHeader(rawHeaders[i], out var header);
                }
            });

            Assert.True(cache.Validate());
        }
Beispiel #2
0
        public void AddHeader_BeyondCapacity()
        {
            const int Count      = 20;
            var       cache      = new JwtHeaderCache();
            var       rawHeaders = new byte[Count][];

            for (int i = 0; i < Count; i++)
            {
                rawHeaders[i] = new byte[32];
                RandomNumberGenerator.Fill(rawHeaders[i]);
                JwtHeader header = JwtHeader.FromJson($"{{\"kid\":\"{i}\"}}");
                cache.AddHeader(rawHeaders[i], header);
                Assert.Equal(header, cache.Head);
            }

            Assert.Equal("19", cache.Head.Kid);
            Assert.Equal("10", cache.Tail.Kid);
            for (int i = 0; i < 10; i++)
            {
                Assert.False(cache.TryGetHeader(rawHeaders[i], out var header));
            }

            for (int i = 10; i < Count; i++)
            {
                Assert.True(cache.TryGetHeader(rawHeaders[i], out var header));
            }
        }
Beispiel #3
0
        public void AddHeader_Lru()
        {
            var cache      = new JwtHeaderCache();
            var rawHeaders = new byte[10][];

            for (int i = 0; i < 10; i++)
            {
                rawHeaders[i] = new byte[32];
                RandomNumberGenerator.Fill(rawHeaders[i]);
                JwtHeader header = JwtHeader.FromJson($"{{\"kid\":\"{i}\"}}");
                cache.AddHeader(rawHeaders[i], header);
            }

            for (int i = 0; i < 10; i++)
            {
                Assert.True(cache.TryGetHeader(rawHeaders[i], out var header));
                Assert.Equal(header, cache.Head);
                Assert.NotEqual(header, cache.Tail);
            }
        }