@@ -27,6 +27,22 @@ public DatabaseLoaderTests(ITestOutputHelper output)
2727
2828 [ LightGBMFact ]
2929 public void IrisLightGbm ( )
30+ {
31+ DatabaseSource dbs = GetIrisDatabaseSource ( "SELECT * FROM {0}" ) ;
32+ IrisLightGbmImpl ( dbs ) ;
33+ }
34+
35+ [ LightGBMFact ]
36+ public void IrisLightGbmWithTimeout ( )
37+ {
38+ if ( ! RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) ) //sqlite does not have built-in command for sleep
39+ return ;
40+ DatabaseSource dbs = GetIrisDatabaseSource ( "WAITFOR DELAY '00:00:01'; SELECT * FROM {0}" , 1 ) ;
41+ var ex = Assert . Throws < System . Reflection . TargetInvocationException > ( ( ) => IrisLightGbmImpl ( dbs ) ) ;
42+ Assert . Contains ( "Timeout" , ex . InnerException . Message ) ;
43+ }
44+
45+ private void IrisLightGbmImpl ( DatabaseSource dbs )
3046 {
3147 var mlContext = new MLContext ( seed : 1 ) ;
3248
@@ -41,7 +57,7 @@ public void IrisLightGbm()
4157
4258 var loader = mlContext . Data . CreateDatabaseLoader ( loaderColumns ) ;
4359
44- var trainingData = loader . Load ( GetIrisDatabaseSource ( "SELECT * FROM {0}" ) ) ;
60+ var trainingData = loader . Load ( dbs ) ;
4561
4662 IEstimator < ITransformer > pipeline = mlContext . Transforms . Conversion . MapValueToKey ( "Label" )
4763 . Append ( mlContext . Transforms . Concatenate ( "Features" , "SepalLength" , "SepalWidth" , "PetalLength" , "PetalWidth" ) )
@@ -211,18 +227,20 @@ public void IrisSdcaMaximumEntropy()
211227 /// SQLite database is used on Linux and MacOS builds.
212228 /// </summary>
213229 /// <returns>Return the appropiate Iris DatabaseSource according to build OS.</returns>
214- private DatabaseSource GetIrisDatabaseSource ( string command )
230+ private DatabaseSource GetIrisDatabaseSource ( string command , int commandTimeoutInSeconds = 30 )
215231 {
216232 if ( RuntimeInformation . IsOSPlatform ( OSPlatform . Windows ) )
217233 return new DatabaseSource (
218234 SqlClientFactory . Instance ,
219235 GetMSSQLConnectionString ( TestDatasets . irisDb . name ) ,
220- String . Format ( command , $@ """{ TestDatasets . irisDb . trainFilename } """));
236+ String . Format ( command , $@ """{ TestDatasets . irisDb . trainFilename } """),
237+ commandTimeoutInSeconds);
221238 else
222239 return new DatabaseSource(
223240 SQLiteFactory.Instance,
224241 GetSQLiteConnectionString(TestDatasets.irisDbSQLite.name),
225- String.Format(command, TestDatasets.irisDbSQLite.trainFilename));
242+ String.Format(command, TestDatasets.irisDbSQLite.trainFilename),
243+ commandTimeoutInSeconds);
226244 }
227245
228246 private string GetMSSQLConnectionString(string databaseName)
0 commit comments