public void QuartzSelectCommand() { var args = new DelegateInitializationArgs(); args.Logger = LogManager.GetLogger(GetType()); args.TablePrefix = "LAVA_"; args.InstanceName = "Lava"; args.InstanceId = "AUTO"; args.DbProvider = new DbProvider("SqlServer-20", "Data Source=.;Initial Catalog=Lava;User ID=sa;Password=123"); args.TypeLoadHelper = new SimpleTypeLoadHelper(); args.ObjectSerializer = new DefaultObjectSerializer(); StdAdoDelegate adoDelegate = new StdAdoDelegate(); adoDelegate.Initialize(args); using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=Lava;User ID=sa;Password=123")) { conn.Open(); SqlTransaction tran = conn.BeginTransaction(); try { ConnectionAndTransactionHolder holder = new ConnectionAndTransactionHolder(conn, tran); var num = adoDelegate.SelectNumJobs(holder); tran.Commit(); } catch (Exception ex) { tran.Rollback(); } } }
public void TestSerializeJobData() { StdAdoDelegate del = new StdAdoDelegate(LogManager.GetLogger(GetType()), "QRTZ_", "INSTANCE", new DbProvider("SqlServer-11", "")); JobDataMap jdm = new JobDataMap(); del.SerializeJobData(jdm); jdm.Clear(); jdm.Put("key", "value"); jdm.Put("key2", null); del.SerializeJobData(jdm); jdm.Clear(); jdm.Put("key1", "value"); jdm.Put("key2", null); jdm.Put("key3", new NonSerializableTestClass()); try { del.SerializeJobData(jdm); Assert.Fail(); } catch (SerializationException e) { Assert.IsTrue(e.Message.IndexOf("key3") >= 0); } }
public void CronTrigger_AfterTriggerUpdate_Retains_Cron_Type() { //Arrange var cronTriggerImpl = new CronTriggerImpl("Trigger", "Trigger.Group", "JobName", "JobGroup", "0 15 23 * * ?"); cronTriggerImpl.CalendarName = "calName"; cronTriggerImpl.MisfireInstruction = 1; cronTriggerImpl.Description = "Description"; cronTriggerImpl.SetPreviousFireTimeUtc(new DateTimeOffset(new DateTime(2010, 1, 1))); cronTriggerImpl.SetNextFireTimeUtc(new DateTimeOffset(new DateTime(2010, 2, 1))); cronTriggerImpl.JobKey = new JobKey("JobKey", "JobKeyGroup"); cronTriggerImpl.Priority = 1; var dbProvider = MockRepository.GenerateStub <IDbProvider>(); var dbCommand = MockRepository.GenerateStub <IDbCommand>(); var dataParameterCollection = MockRepository.GenerateStub <IDataParameterCollection>(); dbProvider.Stub(d => d.CreateCommand()).Return(dbCommand).Repeat.Any(); Func <StubDataParameter> dataParam = () => new StubDataParameter(); dbProvider.Stub(d => d.CreateParameter()).Do(dataParam); dbCommand.Stub(c => c.CreateParameter()).Do(dataParam); var dataParameterCollectionOutputs = new List <object>(); Func <object, int> dataParameterFunc = x => { dataParameterCollectionOutputs.Add(x); return(1); }; dataParameterCollection.Stub(d => d.Add(Arg <object> .Is.Anything)).Do(dataParameterFunc); dbCommand.Stub(c => c.Parameters).Return(dataParameterCollection); var metaData = MockRepository.GenerateStub <DbMetadata>(); dbProvider.Stub(d => d.Metadata).Return(metaData); Func <string, string> paramFunc = x => x; metaData.Stub(m => m.GetParameterName(Arg <string> .Is.Anything)).Do(paramFunc); var adoDelegate = new StdAdoDelegate(LogManager.GetLogger(GetType()), "QRTZ_", "TESTSCHED", "INSTANCE", dbProvider, new SimpleTypeLoadHelper()); var dbConnection = new StubConnection(); var conn = new ConnectionAndTransactionHolder(dbConnection, null); var jobDetail = MockRepository.GenerateMock <IJobDetail>(); var jobDataMap = new JobDataMap(); jobDataMap.ClearDirtyFlag(); cronTriggerImpl.JobDataMap = jobDataMap; //Act adoDelegate.UpdateTrigger(conn, cronTriggerImpl, "state", jobDetail); //Assert var resultDataParameters = dataParameterCollectionOutputs.Select(x => x as IDataParameter).Where(x => x.ParameterName == "triggerType").FirstOrDefault(); Assert.AreEqual("CRON", resultDataParameters.Value); }
public async Task TestSelectBlobTriggerWithNoBlobContent() { var dbProvider = A.Fake <IDbProvider>(); var connection = A.Fake <DbConnection>(); var transaction = A.Fake <DbTransaction>(); var command = (DbCommand)A.Fake <StubCommand>(); var dbMetadata = new DbMetadata(); A.CallTo(() => dbProvider.Metadata).Returns(dbMetadata); A.CallTo(() => dbProvider.CreateCommand()).Returns(command); var dataReader = A.Fake <DbDataReader>(); A.CallTo(command).Where(x => x.Method.Name == "ExecuteDbDataReaderAsync") .WithReturnType <Task <DbDataReader> >() .Returns(dataReader); A.CallTo(command).Where(x => x.Method.Name == "get_DbParameterCollection") .WithReturnType <DbParameterCollection>() .Returns(new StubParameterCollection()); A.CallTo(() => command.CommandText).Returns(""); A.CallTo(command).Where(x => x.Method.Name == "CreateDbParameter") .WithReturnType <DbParameter>() .Returns(new SqlParameter()); var adoDelegate = new StdAdoDelegate(); var delegateInitializationArgs = new DelegateInitializationArgs { TablePrefix = "QRTZ_", InstanceId = "TESTSCHED", InstanceName = "INSTANCE", TypeLoadHelper = new SimpleTypeLoadHelper(), UseProperties = false, InitString = "", Logger = LogProvider.GetLogger(GetType()), DbProvider = dbProvider }; adoDelegate.Initialize(delegateInitializationArgs); var conn = new ConnectionAndTransactionHolder(connection, transaction); // First result set has results, second has none A.CallTo(() => dataReader.ReadAsync(CancellationToken.None)).Returns(true).Once(); A.CallTo(() => dataReader.ReadAsync(CancellationToken.None)).Returns(false); A.CallTo(() => dataReader[AdoConstants.ColumnTriggerType]).Returns(AdoConstants.TriggerTypeBlob); IOperableTrigger trigger = await adoDelegate.SelectTrigger(conn, new TriggerKey("test")); Assert.That(trigger, Is.Null); }
public void TestSerializeJobData() { #if BINARY_SERIALIZATION bool binary = serializer.GetType() == typeof(BinaryObjectSerializer); #else bool binary = false; #endif var args = new DelegateInitializationArgs(); args.Logger = LogProvider.GetLogger(GetType()); args.TablePrefix = "QRTZ_"; args.InstanceName = "TESTSCHED"; args.InstanceId = "INSTANCE"; args.DbProvider = new DbProvider(TestConstants.DefaultSqlServerProvider, ""); args.TypeLoadHelper = new SimpleTypeLoadHelper(); args.ObjectSerializer = serializer; var del = new StdAdoDelegate(); del.Initialize(args); var jdm = new JobDataMap(); del.SerializeJobData(jdm); jdm.Clear(); jdm.Put("key", "value"); jdm.Put("key2", null); del.SerializeJobData(jdm); jdm.Clear(); jdm.Put("key1", "value"); jdm.Put("key2", null); jdm.Put("key3", new NonSerializableTestClass()); try { del.SerializeJobData(jdm); if (binary) { Assert.Fail("Private types should not be serializable by binary serialization"); } } catch (SerializationException e) { if (binary) { Assert.IsTrue(e.Message.IndexOf("key3", StringComparison.Ordinal) >= 0); } else { Assert.Fail($"Private types should be serializable when not using binary serialization: {e}"); } } }
public void TestSelectBlobTriggerWithNoBlobContent() { var dbProvider = MockRepository.GenerateMock <IDbProvider>(); var connection = MockRepository.GenerateMock <IDbConnection>(); var transaction = MockRepository.GenerateMock <IDbTransaction>(); var command = (IDbCommand)MockRepository.GenerateMock <StubCommand>(); var dbMetadata = new DbMetadata(); dbProvider.Stub(x => x.Metadata).Repeat.Any().Return(dbMetadata); dbProvider.Stub(x => x.CreateCommand()).Return(command); var dataReader = MockRepository.GenerateMock <IDataReader>(); command.Stub(x => x.ExecuteReader()).Return(dataReader); command.Stub(x => x.Parameters).Repeat.Any().Return(new StubParameterCollection()); command.Stub(x => x.CommandText).Return("").Repeat.Any(); command.Stub(x => x.CreateParameter()).Repeat.Any().Return(new StubDataParameter()); var adoDelegate = new StdAdoDelegate(); var delegateInitializationArgs = new DelegateInitializationArgs { TablePrefix = "QRTZ_", InstanceId = "TESTSCHED", InstanceName = "INSTANCE", TypeLoadHelper = new SimpleTypeLoadHelper(), UseProperties = false, InitString = "", Logger = LogManager.GetLogger(GetType()), DbProvider = dbProvider }; adoDelegate.Initialize(delegateInitializationArgs); var conn = new ConnectionAndTransactionHolder(connection, transaction); // First result set has results, second has none dataReader.Stub(x => x.Read()).Return(true).Repeat.Once(); dataReader.Stub(x => x.Read()).Return(false); dataReader.Stub(x => x[AdoConstants.ColumnTriggerType]).Return(AdoConstants.TriggerTypeBlob); IOperableTrigger trigger = adoDelegate.SelectTrigger(conn, new TriggerKey("test")); Assert.That(trigger, Is.Null); }
public void TestSerializeJobData() { var args = new DelegateInitializationArgs(); args.Logger = LogManager.GetLogger(GetType()); args.TablePrefix = "QRTZ_"; args.InstanceName = "TESTSCHED"; args.InstanceId = "INSTANCE"; args.DbProvider = new DbProvider("SqlServer-20", ""); args.TypeLoadHelper = new SimpleTypeLoadHelper(); args.ObjectSerializer = new DefaultObjectSerializer(); var del = new StdAdoDelegate(); del.Initialize(args); var jdm = new JobDataMap(); del.SerializeJobData(jdm); jdm.Clear(); jdm.Put("key", "value"); jdm.Put("key2", null); del.SerializeJobData(jdm); jdm.Clear(); jdm.Put("key1", "value"); jdm.Put("key2", null); jdm.Put("key3", new NonSerializableTestClass()); try { del.SerializeJobData(jdm); Assert.Fail(); } catch (SerializationException e) { Assert.IsTrue(e.Message.IndexOf("key3") >= 0); } }
public async Task CronTrigger_AfterTriggerUpdate_Retains_Cron_Type() { //Arrange var cronTriggerImpl = new CronTriggerImpl("Trigger", "Trigger.Group", "JobName", "JobGroup", "0 15 23 * * ?"); cronTriggerImpl.CalendarName = "calName"; cronTriggerImpl.MisfireInstruction = 1; cronTriggerImpl.Description = "Description"; cronTriggerImpl.SetPreviousFireTimeUtc(new DateTimeOffset(new DateTime(2010, 1, 1))); cronTriggerImpl.SetNextFireTimeUtc(new DateTimeOffset(new DateTime(2010, 2, 1))); cronTriggerImpl.JobKey = new JobKey("JobKey", "JobKeyGroup"); cronTriggerImpl.Priority = 1; var dbProvider = A.Fake <IDbProvider>(); var dbCommand = A.Fake <DbCommand>(); var dataParameterCollection = A.Fake <DbParameterCollection>(); A.CallTo(() => dbProvider.CreateCommand()).Returns(dbCommand); Func <DbParameter> dataParam = () => new SqlParameter(); A.CallTo(dbProvider) .Where(x => x.Method.Name == "CreateDbParameter") .WithReturnType <DbParameter>() .ReturnsLazily(dataParam); A.CallTo(dbCommand) .Where(x => x.Method.Name == "CreateDbParameter") .WithReturnType <DbParameter>() .ReturnsLazily(dataParam); var dataParameterCollectionOutputs = new List <object>(); A.CallTo(() => dataParameterCollection.Add(A <object> ._)).Invokes(x => { dataParameterCollectionOutputs.Add(x.Arguments.Single()); }); A.CallTo(dbCommand) .Where(x => x.Method.Name == "get_DbParameterCollection") .WithReturnType <DbParameterCollection>() .Returns(dataParameterCollection); var metaData = A.Fake <DbMetadata>(); A.CallTo(() => dbProvider.Metadata).Returns(metaData); Func <string, string> paramFunc = x => x; A.CallTo(() => metaData.GetParameterName(A <string> .Ignored)).ReturnsLazily(paramFunc); DelegateInitializationArgs args = new DelegateInitializationArgs(); args.Logger = LogProvider.GetLogger(GetType()); args.TablePrefix = "QRTZ_"; args.InstanceName = "TESTSCHED"; args.InstanceId = "INSTANCE"; args.DbProvider = dbProvider; args.TypeLoadHelper = new SimpleTypeLoadHelper(); var adoDelegate = new StdAdoDelegate(); adoDelegate.Initialize(args); var dbConnection = new StubConnection(); var conn = new ConnectionAndTransactionHolder(dbConnection, null); var jobDetail = A.Fake <IJobDetail>(); var jobDataMap = new JobDataMap(); jobDataMap.ClearDirtyFlag(); cronTriggerImpl.JobDataMap = jobDataMap; //Act await adoDelegate.UpdateTrigger(conn, cronTriggerImpl, "state", jobDetail); //Assert var resultDataParameters = dataParameterCollectionOutputs.Select(x => x as IDataParameter).Where(x => x.ParameterName == "triggerType").FirstOrDefault(); Assert.AreEqual("CRON", resultDataParameters.Value); }