Esempio n. 1
0
        public void Allocate()
        {
            PermutationSetup permutation = new PermutationSetup();

            permutation.Add(count16queue0);
            permutation.Add(count16queue16);

            foreach (Scenario scenario in permutation.Scenarios)
            {
                using (Run run = scenario.Run().Initialize())
                {
                    IBlockPool pool = run.Parameters["Pool"] as BlockPool;
                    byte[]     data = null;
                    for (int i = 0; i < 16; i++)
                    {
                        data = pool.Allocate();
                        Assert.IsTrue(data != null);
                        Assert.AreEqual(4096, data.Length);
                    }
                    Semaphore s = new Semaphore(0, 256);
                    Task.Run(() =>
                    {
                        pool.Allocate();
                        s.Release();
                    });

                    Assert.IsFalse(s.WaitOne(500));
                    pool.Return(data);
                    Assert.IsTrue(s.WaitOne(500));
                }
            }
        }
Esempio n. 2
0
        public void TryAllocate()
        {
            PermutationSetup permutation = new PermutationSetup();

            permutation.Add(count16queue0);
            permutation.Add(count16queue16);

            foreach (Scenario scenario in permutation.Scenarios)
            {
                using (Run run = scenario.Run().Initialize())
                {
                    IBlockPool pool = run.Parameters["Pool"] as BlockPool;
                    byte[]     data = null;
                    for (int i = 0; i < 16; i++)
                    {
                        Assert.IsTrue(pool.TryAllocate(out data));
                        Assert.AreEqual(4096, data.Length);
                    }
                    byte[] data2;
                    Assert.IsFalse(pool.TryAllocate(out data2));
                    pool.Return(data);
                    Assert.IsTrue(pool.TryAllocate(out data));
                }
            }
        }