/// <summary> /// DT_SCRIPT_CONFIGテーブルから指定したインストールタイプを持つレコードを取得する /// </summary> /// <param name="installTypeSid">インストールタイプSID</param> /// <returns>スクリプト設定データリスト</returns> /// <remarks> /// テーブルからデータを取得できなかった場合にはnuilを返す /// </remarks> public List <DtScriptConfig> ReadDtScriptConfigs(long installTypeSid) { List <DtScriptConfig> models = null; try { _logger.Enter("ReadDtStorageConfigs"); IQueryable <DBAccessor.Models.DtScriptConfig> entities = null; _dbPolly.Execute(() => { using (DBAccessor.Models.RmsDbContext db = new DBAccessor.Models.RmsDbContext(_appSettings)) { // 全件取得 entities = db.DtScriptConfig.Where(x => x.InstallTypeSid == installTypeSid); } }); if (entities != null && entities.Count() > 0) { models = new List <DtScriptConfig>(); foreach (DBAccessor.Models.DtScriptConfig config in entities) { DtScriptConfig model = config.ToModel(); models.Add(model); } } return(models); } catch (ValidationException e) { throw new RmsParameterException(e.ValidationResult.ErrorMessage, e); } catch (Exception e) { throw new RmsException("DT_SCRIPT_CONFIGテーブルのSelectに失敗しました。", e); } finally { _logger.LeaveJson("{0}", models); } }
public void SetScriptConfigsTest() { ServerSyncMessage m; List <DtScriptConfig> scriptConfigs; // 同じ名称だがバージョンの異なるレコードがDBに存在するケース { m = new ServerSyncMessage(); scriptConfigs = new List <DtScriptConfig>(); DtScriptConfig config = CreateScriptConfig("TestA", "FileName", 1, "Location"); scriptConfigs.Add(config); config = CreateScriptConfig("TestA", "FileName", 2, "Location"); // キー名が同じでバージョンが異なる要素を追加 scriptConfigs.Add(config); bool result = m.SetScriptConfigs(scriptConfigs); string message = ServerSyncMessage.CreateJsonString(m); Assert.AreEqual(true, result); Assert.AreEqual(1, m.Script.Count); Assert.AreEqual(2, m.Script["TestA"].Version); Assert.IsNotNull(m.Script); Assert.IsNotNull(m.Storage); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 同じ名称だがバージョンの異なるレコードがDBに存在するケース // 最新のレコードがリストの先頭にある場合 { m = new ServerSyncMessage(); scriptConfigs = new List <DtScriptConfig>(); DtScriptConfig config = CreateScriptConfig("TestA", "FileName", 2, "Location"); scriptConfigs.Add(config); config = CreateScriptConfig("TestA", "FileName", 1, "Location"); // キー名が同じでバージョンが異なる要素を追加 scriptConfigs.Add(config); bool result = m.SetScriptConfigs(scriptConfigs); string message = ServerSyncMessage.CreateJsonString(m); Assert.AreEqual(true, result); Assert.AreEqual(1, m.Script.Count); Assert.AreEqual(2, m.Script["TestA"].Version); Assert.IsNotNull(m.Script); Assert.IsNotNull(m.Storage); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // nullを設定したケース { m = new ServerSyncMessage(); scriptConfigs = new List <DtScriptConfig>(); bool result = m.SetScriptConfigs(null); string message = ServerSyncMessage.CreateJsonString(m); Assert.AreEqual(false, result); Assert.IsNotNull(m.Script); Assert.IsNotNull(m.Storage); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 空のリストを設定したケース { m = new ServerSyncMessage(); scriptConfigs = new List <DtScriptConfig>(); bool result = m.SetScriptConfigs(scriptConfigs); string message = ServerSyncMessage.CreateJsonString(m); Assert.AreEqual(true, result); Assert.IsNotNull(m.Script); Assert.IsNotNull(m.Storage); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } }
public void EqualsTest() { const int DataSize = 3; const string StorageName = "StorageName{0}"; const string Url = "Url{0}"; const string Sas = "Sas{0}"; const string ScriptName = "ScriptName{0}"; const string FileName = "FileName{0}"; const int Version = 1; const string Location = "Location{0}"; ServerSyncMessage m1 = new ServerSyncMessage(); ServerSyncMessage m2 = new ServerSyncMessage(); List <DtStorageConfig> storageConfigs; List <DtScriptConfig> scriptConfigs; // 2つのメッセージの内容が一致するケース { storageConfigs = new List <DtStorageConfig>(); scriptConfigs = new List <DtScriptConfig>(); for (int i = 1; i <= DataSize; i++) { DtStorageConfig config = CreateStorageConfig( string.Format(StorageName, i), string.Format(Url, i), string.Format(Sas, i)); storageConfigs.Add(config); } for (int i = 1; i <= DataSize; i++) { DtScriptConfig config = CreateScriptConfig( string.Format(ScriptName, i), string.Format(FileName, i), Version, string.Format(Location, i)); scriptConfigs.Add(config); } m1.SetScriptConfigs(scriptConfigs); m1.SetStorageConfigs(storageConfigs); m2.SetScriptConfigs(scriptConfigs); m2.SetStorageConfigs(storageConfigs); bool result = ServerSyncMessage.Equals(m1, m2); string message = ServerSyncMessage.CreateJsonString(m1); Assert.AreEqual(true, result); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 2つのメッセージの内容が一致するケース // リストに格納された順序が異なっているケース { storageConfigs = new List <DtStorageConfig>(); scriptConfigs = new List <DtScriptConfig>(); for (int i = DataSize; i > 0; i--) { DtStorageConfig config = CreateStorageConfig( string.Format(StorageName, i), string.Format(Url, i), string.Format(Sas, i)); storageConfigs.Add(config); } for (int i = DataSize; i > 0; i--) { DtScriptConfig config = CreateScriptConfig( string.Format(ScriptName, i), string.Format(FileName, i), Version, string.Format(Location, i)); scriptConfigs.Add(config); } m2.SetScriptConfigs(scriptConfigs); m2.SetStorageConfigs(storageConfigs); bool result = ServerSyncMessage.Equals(m1, m2); string message = ServerSyncMessage.CreateJsonString(m2); Assert.AreEqual(true, result); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 2つのメッセージの内容が一致しないケース // 2つのメッセージの要素数が一致しないケース { storageConfigs = new List <DtStorageConfig>(); scriptConfigs = new List <DtScriptConfig>(); for (int i = 1; i <= DataSize + 1; i++) { DtStorageConfig config = CreateStorageConfig( string.Format(StorageName, i), string.Format(Url, i), string.Format(Sas, i)); storageConfigs.Add(config); } for (int i = 1; i <= DataSize + 1; i++) { DtScriptConfig config = CreateScriptConfig( string.Format(ScriptName, i), string.Format(FileName, i), Version, string.Format(Location, i)); scriptConfigs.Add(config); } m2.SetScriptConfigs(scriptConfigs); m2.SetStorageConfigs(storageConfigs); bool result = ServerSyncMessage.Equals(m1, m2); string message = ServerSyncMessage.CreateJsonString(m2); Assert.AreEqual(false, result); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 2つのメッセージの内容が一致しないケース // 2つのメッセージの要素数は一致するが、Nameが一部一致しないケース { storageConfigs = new List <DtStorageConfig>(); scriptConfigs = new List <DtScriptConfig>(); for (int i = 1; i <= DataSize; i++) { DtStorageConfig config; if (i == 1) { config = CreateStorageConfig( string.Format("NAME{0}", i), string.Format(Url, i), string.Format(Sas, i)); } else { config = CreateStorageConfig( string.Format(StorageName, i), string.Format(Url, i), string.Format(Sas, i)); } storageConfigs.Add(config); } for (int i = 1; i <= DataSize; i++) { DtScriptConfig config; if (i == 1) { config = CreateScriptConfig( string.Format("NAME{0}", i), string.Format(FileName, i), Version, string.Format(Location, i)); } else { config = CreateScriptConfig( string.Format(ScriptName, i), string.Format(FileName, i), Version, string.Format(Location, i)); } scriptConfigs.Add(config); } m2.SetScriptConfigs(scriptConfigs); m2.SetStorageConfigs(storageConfigs); bool result = ServerSyncMessage.Equals(m1, m2); string message = ServerSyncMessage.CreateJsonString(m2); Assert.AreEqual(false, result); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 2つのメッセージの内容が一致しないケース // 2つのメッセージの要素数とNameは一致するが、内容(文字列等)が一致しないケース { storageConfigs = new List <DtStorageConfig>(); scriptConfigs = new List <DtScriptConfig>(); for (int i = 1; i <= DataSize; i++) { DtStorageConfig config = CreateStorageConfig( string.Format(StorageName, i), string.Format("URL{0}", i), string.Format("SAS{0}", i)); storageConfigs.Add(config); } for (int i = 1; i <= DataSize; i++) { DtScriptConfig config = CreateScriptConfig( string.Format(ScriptName, i), string.Format("FILENAME{0}", i), Version, string.Format("LOCATION{0}", i)); scriptConfigs.Add(config); } m2.SetScriptConfigs(scriptConfigs); m2.SetStorageConfigs(storageConfigs); bool result = ServerSyncMessage.Equals(m1, m2); string message = ServerSyncMessage.CreateJsonString(m2); Assert.AreEqual(false, result); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } // 2つのメッセージの内容が一致しないケース // スクリプト設定のバージョンのみが一致しないケース { storageConfigs = new List <DtStorageConfig>(); scriptConfigs = new List <DtScriptConfig>(); for (int i = 1; i <= DataSize; i++) { DtStorageConfig config = CreateStorageConfig( string.Format(StorageName, i), string.Format(Url, i), string.Format(Sas, i)); storageConfigs.Add(config); } for (int i = 1; i <= DataSize; i++) { DtScriptConfig config; if (i == 1) { config = CreateScriptConfig( string.Format(ScriptName, i), string.Format(FileName, i), Version + 1, string.Format(Location, i)); } else { config = CreateScriptConfig( string.Format(ScriptName, i), string.Format(FileName, i), Version, string.Format(Location, i)); } scriptConfigs.Add(config); } m2.SetScriptConfigs(scriptConfigs); m2.SetStorageConfigs(storageConfigs); bool result = ServerSyncMessage.Equals(m1, m2); string message = ServerSyncMessage.CreateJsonString(m2); Assert.AreEqual(false, result); Assert.IsNotNull(message); Assert.AreNotEqual(string.Empty, message); } }