public void String_009(string v) { var h = ShardKey.ForString(v); "Hash: {0:x2}".SeeArgs(h); Aver.AreEqual(new ShardKey(v).Hash, h); }
protected internal Shard(ShardSet set, IConfigSectionNode conf) { m_Set = set.NonNull(nameof(set)); ConfigAttribute.Apply(this, conf.NonEmpty(nameof(conf))); m_Name = conf.ValOf(Configuration.CONFIG_NAME_ATTR).NonBlank("$name"); m_NameHash = ShardKey.ForString(m_Name); m_Weight = conf.Of(CONFIG_WEIGHT_ATTR).ValueAsDouble(1.0d); m_ConnectString = conf.Of(CONFIG_CONNECT_ATTR, CONFIG_CONNECT_STRING_ATTR).Value.NonBlank($"${CONFIG_CONNECT_ATTR}"); m_DatabaseName = conf.Of(CONFIG_DB_ATTR).Value.NonBlank($"${CONFIG_DB_ATTR}"); }
internal TypeSchema(IArea area, IConfigSectionNode cfg) { m_Area = area.NonNull(nameof(area)); if (!cfg.NonEmpty(nameof(cfg)).IsSameName(CONFIG_SCHEMA_SECTION)) { cfg = cfg[CONFIG_SCHEMA_SECTION]; } cfg.NonEmpty(nameof(CONFIG_SCHEMA_SECTION)); m_Assemblies = new Dictionary <string, BuildInformation>(StringComparer.OrdinalIgnoreCase); m_ObjectTypes = new Dictionary <string, Type>(StringComparer.OrdinalIgnoreCase); m_QueryTypes = new Dictionary <string, List <Type> >(StringComparer.OrdinalIgnoreCase); try { foreach (var node in cfg.ChildrenNamed(CONFIG_ASSEMBLY_SECTION)) { var fn = node.ValOf(CONFIG_FILE_ATTR).NonBlank("{0}/${1}".Args(node.RootPath, CONFIG_FILE_ATTR)); var asm = Assembly.LoadFrom(fn); var nsPat = node.ValOf(CONFIG_NS_PATTERN_ATTR).Default("*"); load(asm, nsPat); } //Computer version digest on SORTED assembly Build infos //the operation is deferred after all assemblies finished loading m_Version = 0; foreach (var entry in m_Assemblies.OrderBy(e => e.Key)) //(deterministic order) based on Assembly FQN { m_Version ^= ShardKey.ForString(entry.Value.Content); //compute version digest hash based on the BuildInfo } } catch (Exception error) { throw new ConfigException("Bad config of {0}: {1}".Args(nameof(TypeSchema), error.ToMessageWithType()), error); } }
public void String_008() { Aver.AreEqual(ShardKey.ForString("водах"), ShardKey.ForString("водах")); Aver.AreEqual(ShardKey.ForString("Американские суда находятся в международных водах"), ShardKey.ForString("Американские суда находятся в международных водах")); }
[Run] public void FNV1A64_String7() => Aver.AreEqual(0x181ff1a88c7c1e81UL, ShardKey.ForString("very very long string which is much longer than other strings IN this set"));
public void String_006() { Aver.AreEqual(ShardKey.ForString("abcDefghuiop"), ShardKey.ForString("abcDefghuiop")); }
public void String_007() { Aver.AreEqual(ShardKey.ForString("久"), ShardKey.ForString("久")); Aver.AreEqual(ShardKey.ForString("久有归天愿"), ShardKey.ForString("久有归天愿")); Aver.AreEqual(ShardKey.ForString("久有归天愿八十三年过去到处群魔乱舞"), ShardKey.ForString("久有归天愿八十三年过去到处群魔乱舞")); }
public void String_004() { Aver.AreEqual(ShardKey.ForString("abc"), ShardKey.ForString("abc")); }
public void String_005() { Aver.AreEqual(ShardKey.ForString("abcD"), ShardKey.ForString("abcD")); Aver.AreNotEqual(ShardKey.ForString("abcD"), ShardKey.ForString("abcd")); }
public void String_001() { Aver.AreEqual(0ul, ShardKey.ForString(null)); }
public void String_002() { Aver.AreEqual(0ul, ShardKey.ForString("")); }
[Run] public void FNV1A64_String6() => Aver.AreEqual(0xb33b26031858e24bUL, ShardKey.ForString("capital"));
[Run] public void FNV1A64_String0b() => Aver.AreEqual(0ul, ShardKey.ForString(""));
[Run] public void FNV1A64_String5() => Aver.AreEqual(0xd8bff0beeb476aabUL, ShardKey.ForString("Capital"));
[Run] public void FNV1A64_String4() => Aver.AreEqual(0xc2d3aa17cdf6a148UL, ShardKey.ForString(" ab"));
[Run] public void FNV1A64_String3() => Aver.AreEqual(0xe71fe3190541c5beUL, ShardKey.ForString("ab "));
[Run] public void FNV1A64_String2() => Aver.AreEqual(0x089c4407b545986aUL, ShardKey.ForString("ab"));
[Run] public void FNV1A64_String1() => Aver.AreEqual(0xaf63dc4c8601ec8cUL, ShardKey.ForString("a"));
[Run] public void FNV1A64_String8() => Aver.AreEqual(0x37458A3018A18365UL, ShardKey.ForString("久有归天愿"));
public ulong GetDistributedStableHash() => (System.GetDistributedStableHash() << 32) ^ Type.GetDistributedStableHash() ^ ShardKey.ForString(Address);