Ejemplo n.º 1
0
        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();
                }
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 8
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);
        }