public void TestEvalWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { failpoint.SetAlwaysOn(); var args = new EvalArgs { Code = "return 0;", MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws <ExecutionTimeoutException>(() => _database.Eval(args)); } } } }
public void TestEvalWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime) && _primary.InstanceType != MongoServerInstanceType.ShardRouter) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { failpoint.SetAlwaysOn(); var args = new EvalArgs { Code = "return 0;", MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _database.Eval(args)); } } } }
public void TestFindWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { if (_collection.Exists()) { _collection.Drop(); } _collection.Insert(new BsonDocument("x", 1)); failpoint.SetAlwaysOn(); var maxTime = TimeSpan.FromMilliseconds(1); Assert.Throws<ExecutionTimeoutException>(() => _collection.FindAll().SetMaxTime(maxTime).ToList()); } } } }
public void TestFindOneAsWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { _collection.RemoveAll(); _collection.Insert(new BsonDocument { { "X", 1 } }); failpoint.SetAlwaysOn(); var args = new FindOneArgs { MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.FindOneAs(typeof(TestClass), args)); } } } }
public void TestFindAndRemoveWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { failpoint.SetAlwaysOn(); var args = new FindAndRemoveArgs { MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.FindAndRemove(args)); } } } }
public void TestMapReduceInlineWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { _collection.RemoveAll(); _collection.Insert(new BsonDocument("x", 1)); // make sure collection has at least one document so map gets called failpoint.SetAlwaysOn(); var args = new MapReduceArgs { MapFunction = "function() { }", ReduceFunction = "function(key, value) { return 0; }", MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.MapReduce(args)); } } } }
public void TestAggregateMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { _collection.RemoveAll(); _collection.DropAllIndexes(); _collection.Insert(new BsonDocument("x", 1)); failpoint.SetAlwaysOn(); var args = new AggregateArgs { Pipeline = new BsonDocument[] { new BsonDocument("$match", Query.Exists("_id").ToBsonDocument()) }, MaxTime = TimeSpan.FromMilliseconds(1) }; var query = _collection.Aggregate(args); Assert.Throws<ExecutionTimeoutException>(() => query.ToList()); } } } }
public void TestGeoNearWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { if (_collection.Exists()) { _collection.Drop(); } _collection.Insert(new BsonDocument("loc", new BsonArray { 0, 0 })); _collection.EnsureIndex(IndexKeys.GeoSpatial("loc")); failpoint.SetAlwaysOn(); var args = new GeoNearArgs { Near = GeoNearPoint.From(0, 0), MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.GeoNearAs<BsonDocument>(args)); } } } }
public void TestGeoHaystackSearchWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { if (_primary.InstanceType != MongoServerInstanceType.ShardRouter) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { if (_collection.Exists()) { _collection.Drop(); } _collection.Insert(new Place { Location = new[] { 34.2, 33.3 }, Type = "restaurant" }); _collection.Insert(new Place { Location = new[] { 34.2, 37.3 }, Type = "restaurant" }); _collection.Insert(new Place { Location = new[] { 59.1, 87.2 }, Type = "office" }); _collection.EnsureIndex(IndexKeys.GeoSpatialHaystack("Location", "Type"), IndexOptions.SetBucketSize(1)); failpoint.SetAlwaysOn(); var args = new GeoHaystackSearchArgs { Near = GeoNearPoint.From(33, 33), AdditionalFieldName = "Type", AdditionalFieldValue = "restaurant", Limit = 30, MaxDistance = 6, MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.GeoHaystackSearchAs<Place>(args)); } } } } }
public void TestDistinctWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { _collection.Drop(); _collection.Insert(new BsonDocument("x", 1)); // ensure collection is not empty failpoint.SetAlwaysOn(); var args = new DistinctArgs { Key = "x", MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.Distinct<BsonValue>(args)); } } } }
public void TestValidateWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { var instance = _server.RequestConnection.ServerInstance; // FailPoint did a RequestStart if (instance.InstanceType != MongoServerInstanceType.ShardRouter) { if (failpoint.IsSupported()) { _collection.Drop(); _collection.Insert(new BsonDocument("x", 1)); // ensure collection is not empty failpoint.SetAlwaysOn(); var args = new ValidateCollectionArgs { MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.Validate(args)); } } } } }
public void TestGroupWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { if (failpoint.IsSupported()) { _collection.Drop(); _collection.Insert(new BsonDocument("x", 1)); // ensure collection is not empty failpoint.SetAlwaysOn(); var args = new GroupArgs { KeyFields = GroupBy.Keys("x"), Initial = new BsonDocument("count", 0), ReduceFunction = "function(doc, prev) { prev.count += 1 }", MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.Group(args)); } } } }
public void TestFindAndModifyWithMaxTime() { if (_primary.Supports(FeatureId.MaxTime) && _primary.Supports(FeatureId.FailPoints)) { using (var failpoint = new FailPoint(FailPointName.MaxTimeAlwaysTimeout, _server, _primary)) { failpoint.SetAlwaysOn(); var args = new FindAndModifyArgs { Update = Update.Set("x", 1), MaxTime = TimeSpan.FromMilliseconds(1) }; Assert.Throws<ExecutionTimeoutException>(() => _collection.FindAndModify(args)); } } }