コード例 #1
0
        public void TestNameHashing()
        {
            var key = new PostgresAdvisoryLockKey(new string('漢', 2 * PostgresAdvisoryLockKey.MaxAsciiLength), allowHashing: true);

            Assert.IsTrue(key.HasSingleKey);
            Assert.AreEqual(-5707277204051710361, key.Key);
            AssertEquality(key, new PostgresAdvisoryLockKey(key.ToString()));
        }
コード例 #2
0
        public void TestInt32PairConstruction()
        {
            var key = new PostgresAdvisoryLockKey(3, -1);

            Assert.IsFalse(key.HasSingleKey);
            Assert.AreEqual((3, -1), key.Keys);
            Assert.AreEqual("00000003,ffffffff", key.ToString());
            AssertEquality(key, new PostgresAdvisoryLockKey(key.ToString()));
        }
コード例 #3
0
        public void TestInt64Construction()
        {
            var key = new PostgresAdvisoryLockKey(1);

            Assert.IsTrue(key.HasSingleKey);
            Assert.AreEqual(1L, key.Key);
            Assert.AreEqual("0000000000000001", key.ToString());
            AssertEquality(key, new PostgresAdvisoryLockKey(key.ToString()));
        }
コード例 #4
0
        private static PostgresAdvisoryLockKey AssertRoundTrips(string name)
        {
            var key1 = new PostgresAdvisoryLockKey(name);
            var key2 = new PostgresAdvisoryLockKey(key1.ToString());
            var key3 = new PostgresAdvisoryLockKey(name, allowHashing: true);

            AssertEquality(key1, key2);
            AssertEquality(key1, key3);
            Assert.AreEqual(key1.ToString(), key2.ToString());
            Assert.AreEqual(key1.ToString(), key3.ToString());
            return(key1);
        }
コード例 #5
0
 private static void AssertEquality(PostgresAdvisoryLockKey a, PostgresAdvisoryLockKey b)
 {
     Assert.AreEqual(a, b);
     Assert.IsTrue(a == b);
     Assert.IsFalse(a != b);
     Assert.AreEqual(a.GetHashCode(), b.GetHashCode());
     if (a.HasSingleKey)
     {
         Assert.AreEqual(a.Key, b.Key);
     }
     else
     {
         Assert.AreEqual(a.Keys, b.Keys);
     }
 }
コード例 #6
0
        public async Task TestInt64AndInt32PairKeyNamespacesAreDifferent()
        {
            var connectionString = TestingPostgresDb.ConnectionString;
            var key1             = new PostgresAdvisoryLockKey(0);
            var key2             = new PostgresAdvisoryLockKey(0, 0);
            var @lock1           = new PostgresDistributedLock(key1, connectionString);
            var @lock2           = new PostgresDistributedLock(key2, connectionString);

            using var handle1 = await lock1.TryAcquireAsync();

            Assert.IsNotNull(handle1);

            using var handle2 = await lock2.TryAcquireAsync();

            Assert.IsNotNull(handle2);
        }