Esempio n. 1
0
    def setUp(cls):
        # create chores
        c1 = Chore(name=CHORE_NAME1,
                   start_time=ChoreStartTime(cls.start_time.year,
                                             cls.start_time.month,
                                             cls.start_time.day,
                                             cls.start_time.hour,
                                             cls.start_time.minute,
                                             cls.start_time.second),
                   dst_sensitivity=False,
                   active=True,
                   execution_mode=Chore.MULTIPLE_COMMIT,
                   frequency=cls.frequency,
                   tasks=cls.tasks)
        cls.tm1.chores.create(c1)

        c2 = Chore(name=CHORE_NAME2,
                   start_time=ChoreStartTime(cls.start_time.year,
                                             cls.start_time.month,
                                             cls.start_time.day,
                                             cls.start_time.hour,
                                             cls.start_time.minute,
                                             cls.start_time.second),
                   dst_sensitivity=False,
                   active=False,
                   execution_mode=Chore.SINGLE_COMMIT,
                   frequency=cls.frequency,
                   tasks=cls.tasks)
        cls.tm1.chores.create(c2)

        # chore without tasks
        c3 = copy.copy(c2)
        c3.name = CHORE_NAME3
        c3.tasks = []
        cls.tm1.chores.create(c3)
Esempio n. 2
0
 def setUp(cls):
     # create chores
     c1 = Chore(name=CHORE_NAME1,
                start_time=ChoreStartTime(cls.start_time.year,
                                          cls.start_time.month,
                                          cls.start_time.day,
                                          cls.start_time.hour,
                                          cls.start_time.minute,
                                          cls.start_time.second),
                dst_sensitivity=False,
                active=True,
                execution_mode='MultipleCommit',
                frequency=cls.frequency,
                tasks=cls.tasks)
     cls.tm1.chores.create(c1)
     c2 = Chore(name=CHORE_NAME2,
                start_time=ChoreStartTime(cls.start_time.year,
                                          cls.start_time.month,
                                          cls.start_time.day,
                                          cls.start_time.hour,
                                          cls.start_time.minute,
                                          cls.start_time.second),
                dst_sensitivity=False,
                active=False,
                execution_mode='SingleCommit',
                frequency=cls.frequency,
                tasks=cls.tasks)
     # No exceptions -> means test passed
     cls.tm1.chores.create(c2)
Esempio n. 3
0
    def test_01create_chore(self):
        c1 = Chore(name=self.chore_name1,
                   start_time=ChoreStartTime(self.start_time.year,
                                             self.start_time.month,
                                             self.start_time.day,
                                             self.start_time.hour,
                                             self.start_time.minute,
                                             self.start_time.second),
                   dst_sensitivity=False,
                   active=True,
                   execution_mode='MultipleCommit',
                   frequency=self.frequency,
                   tasks=self.tasks)
        # No exceptions -> means test passed
        self.tm1.chores.create(c1)

        c2 = Chore(name=self.chore_name2,
                   start_time=ChoreStartTime(self.start_time.year,
                                             self.start_time.month,
                                             self.start_time.day,
                                             self.start_time.hour,
                                             self.start_time.minute,
                                             self.start_time.second),
                   dst_sensitivity=False,
                   active=False,
                   execution_mode='SingleCommit',
                   frequency=self.frequency,
                   tasks=self.tasks)
        # No exceptions -> means test passed
        self.tm1.chores.create(c2)
Esempio n. 4
0
    def test_create_chore_with_dst_single_commit(self):
        # create chores
        c4 = Chore(name=self.chore_name4,
                   start_time=ChoreStartTime(self.start_time.year,
                                             self.start_time.month,
                                             self.start_time.day,
                                             self.start_time.hour,
                                             self.start_time.minute,
                                             self.start_time.second),
                   dst_sensitivity=True,
                   active=True,
                   execution_mode=Chore.SINGLE_COMMIT,
                   frequency=self.frequency,
                   tasks=self.tasks)
        self.tm1.chores.create(c4)

        c4 = self.tm1.chores.get(self.chore_name4)

        self.assertEqual(c4.start_time.datetime.hour, self.start_time.hour)
        self.assertEqual(c4._start_time._datetime.replace(hour=0),
                         self.start_time.replace(hour=0, microsecond=0))
        self.assertEqual(c4._name, self.chore_name4)
        self.assertEqual(c4.active, True)
        self.assertEqual(c4._dst_sensitivity, True)
        self.assertEqual(c4._execution_mode, Chore.SINGLE_COMMIT)
        self.assertEqual(c4._frequency._days,
                         str(self.frequency_days).zfill(2))
        self.assertEqual(c4._frequency._hours,
                         str(self.frequency_hours).zfill(2))
        self.assertEqual(c4._frequency._minutes,
                         str(self.frequency_minutes).zfill(2))
        self.assertEqual(c4._frequency._seconds,
                         str(self.frequency_seconds).zfill(2))
        for task1, task2 in zip(self.tasks, c4._tasks):
            self.assertEqual(task1, task2)
Esempio n. 5
0
    def test_update_chore_without_tasks(self):
        # get chore
        c = self.tm1.chores.get(self.chore_name1)
        # update all properties
        # update start time
        start_time = datetime.now()
        c._start_time = ChoreStartTime(start_time.year, start_time.month, start_time.day,
                                       start_time.hour, start_time.minute, start_time.second)
        c.dst_sensitivity = True
        # update frequency
        frequency_days = int(random.uniform(0, 355))
        frequency_hours = int(random.uniform(0, 23))
        frequency_minutes = int(random.uniform(0, 59))
        frequency_seconds = int(random.uniform(0, 59))
        c._frequency = ChoreFrequency(days=frequency_days, hours=frequency_hours,
                                      minutes=frequency_minutes, seconds=frequency_seconds)

        # execution mode
        c._execution_mode = Chore.SINGLE_COMMIT
        # activate
        c.deactivate()
        # update chore in TM1
        self.tm1.chores.update(c)
        # get chore and check all properties
        c = self.tm1.chores.get(chore_name=self.chore_name1)
        self.assertEqual(c._start_time._datetime.replace(microsecond=0), start_time.replace(microsecond=0))
        self.assertEqual(c._name, self.chore_name1)
        self.assertEqual(c._dst_sensitivity, True)
        self.assertEqual(c._active, False)
        self.assertEqual(c._execution_mode, Chore.SINGLE_COMMIT)
        self.assertEqual(int(c._frequency._days), int(frequency_days))
        self.assertEqual(int(c._frequency._hours), int(frequency_hours))
        self.assertEqual(int(c._frequency._minutes), int(frequency_minutes))
Esempio n. 6
0
 def test_update_chore_remove_tasks(self):
     # get chore
     c = self.tm1.chores.get(self.chore_name1)
     # update all properties
     # update start time
     start_time = datetime.now()
     c._start_time = ChoreStartTime(start_time.year, start_time.month,
                                    start_time.day, start_time.hour,
                                    start_time.minute, start_time.second)
     c.dst_sensitivity = True
     # update frequency
     frequency_days = int(random.uniform(0, 355))
     frequency_hours = int(random.uniform(0, 23))
     frequency_minutes = int(random.uniform(0, 59))
     frequency_seconds = int(random.uniform(0, 59))
     c._frequency = ChoreFrequency(days=frequency_days,
                                   hours=frequency_hours,
                                   minutes=frequency_minutes,
                                   seconds=frequency_seconds)
     # update tasks
     tasks = [
         ChoreTask(0,
                   self.process_name2,
                   parameters=[{
                       'Name': 'pRegion',
                       'Value': 'DE'
                   }]),
         ChoreTask(1,
                   self.process_name2,
                   parameters=[{
                       'Name': 'pRegion',
                       'Value': 'US'
                   }])
     ]
     c._tasks = tasks
     # execution mode
     c._execution_mode = Chore.SINGLE_COMMIT
     # activate
     c.deactivate()
     # update chore in TM1
     self.tm1.chores.update(c)
     # get chore and check all properties
     c = self.tm1.chores.get(chore_name=self.chore_name1)
     self.assertEqual(c._start_time._datetime.replace(microsecond=0),
                      start_time.replace(microsecond=0))
     self.assertEqual(c._name, self.chore_name1)
     self.assertEqual(c._dst_sensitivity, True)
     self.assertEqual(c._active, False)
     self.assertEqual(c._execution_mode, Chore.SINGLE_COMMIT)
     self.assertEqual(int(c._frequency._days), int(frequency_days))
     self.assertEqual(int(c._frequency._hours), int(frequency_hours))
     self.assertEqual(int(c._frequency._minutes), int(frequency_minutes))
     self.assertEqual(len(tasks), len(c._tasks))
     # sometimes there is one second difference. Probably a small bug in the REST API
     self.assertAlmostEqual(int(c._frequency._seconds),
                            int(frequency_seconds),
                            delta=1)
     for task1, task2 in zip(tasks, c._tasks):
         self.assertEqual(task1, task2)
Esempio n. 7
0
    def test_create_chore_with_dst(self):
        # create chores
        c4 = Chore(name=CHORE_NAME4,
                   start_time=ChoreStartTime(self.start_time.year,
                                             self.start_time.month,
                                             self.start_time.day,
                                             self.start_time.hour,
                                             self.start_time.minute,
                                             self.start_time.second),
                   dst_sensitivity=True,
                   active=True,
                   execution_mode=Chore.MULTIPLE_COMMIT,
                   frequency=self.frequency,
                   tasks=self.tasks)
        self.tm1.chores.create(c4)

        c4 = self.tm1.chores.get(CHORE_NAME4)

        # delta in start time is expected to be <= 1h due to potential DST
        self.assertLessEqual(
            abs(c4.start_time.datetime.hour - self.start_time.hour), 1)
        self.assertEqual(c4._start_time._datetime.replace(hour=0),
                         self.start_time.replace(hour=0, microsecond=0))
        self.assertEqual(c4._name, CHORE_NAME4)
        self.assertEqual(c4.active, True)
        self.assertEqual(c4._dst_sensitivity, True)
        # Fails on TM1 <= 11.7.00002.1.
        self.assertEqual(c4._execution_mode, Chore.MULTIPLE_COMMIT)
        self.assertEqual(c4._frequency._days,
                         str(self.frequency_days).zfill(2))
        self.assertEqual(c4._frequency._hours,
                         str(self.frequency_hours).zfill(2))
        self.assertEqual(c4._frequency._minutes,
                         str(self.frequency_minutes).zfill(2))
        self.assertEqual(c4._frequency._seconds,
                         str(self.frequency_seconds).zfill(2))
        for task1, task2 in zip(self.tasks, c4._tasks):
            self.assertEqual(task1, task2)
Esempio n. 8
0
    def test_update_chore_dst(self):
        # get chore
        c = self.tm1.chores.get(CHORE_NAME1)
        # update all properties
        # update start time
        start_time = datetime(2020, 5, 6, 17, 4, 2)
        c._start_time = ChoreStartTime(start_time.year, start_time.month,
                                       start_time.day, start_time.hour,
                                       start_time.minute, start_time.second)
        # update frequency
        frequency_days = int(random.uniform(0, 355))
        frequency_hours = int(random.uniform(0, 23))
        frequency_minutes = int(random.uniform(0, 59))
        frequency_seconds = int(random.uniform(0, 59))
        c._frequency = ChoreFrequency(days=frequency_days,
                                      hours=frequency_hours,
                                      minutes=frequency_minutes,
                                      seconds=frequency_seconds)
        # update tasks
        tasks = [
            ChoreTask(0,
                      PROCESS_NAME2,
                      parameters=[{
                          'Name': 'pRegion',
                          'Value': 'DE'
                      }]),
            ChoreTask(1,
                      PROCESS_NAME2,
                      parameters=[{
                          'Name': 'pRegion',
                          'Value': 'ES'
                      }]),
            ChoreTask(2,
                      PROCESS_NAME2,
                      parameters=[{
                          'Name': 'pRegion',
                          'Value': 'US'
                      }])
        ]
        c._tasks = tasks
        # execution mode
        c._execution_mode = Chore.SINGLE_COMMIT
        # dst sensitivity
        c.dst_sensitivity = True
        # activate
        c.deactivate()
        # update chore in TM1
        self.tm1.chores.update(c)
        # get chore and check all properties
        c = self.tm1.chores.get(chore_name=CHORE_NAME1)

        # delta in start time is expected to be <= 1h due to potential DST
        self.assertLessEqual(abs(c.start_time.datetime.hour - start_time.hour),
                             1)
        self.assertEqual(c._start_time._datetime.replace(hour=0),
                         start_time.replace(hour=0))

        self.assertEqual(c._name, CHORE_NAME1)
        self.assertEqual(c._dst_sensitivity, True)
        self.assertEqual(c._active, False)
        self.assertEqual(c._execution_mode, Chore.SINGLE_COMMIT)
        self.assertEqual(int(c._frequency._days), int(frequency_days))
        self.assertEqual(int(c._frequency._hours), int(frequency_hours))
        self.assertEqual(int(c._frequency._minutes), int(frequency_minutes))
        self.assertEqual(len(tasks), len(c._tasks))
        # sometimes there is one second difference. Probably a small bug in the REST API
        self.assertAlmostEqual(int(c._frequency._seconds),
                               int(frequency_seconds),
                               delta=1)
        for task1, task2 in zip(tasks, c._tasks):
            self.assertEqual(task1, task2)
from TM1py.Objects import ChoreTask
from TM1py.Services import TM1Service

# connection to TM1 Server
with TM1Service(address='localhost',
                port=12354,
                user='******',
                password='******',
                ssl=True) as tm1:
    now = datetime.now()
    frequency = ChoreFrequency(days='7', hours='9', minutes='2', seconds='45')
    tasks = [
        ChoreTask(0,
                  'import_actuals',
                  parameters=[{
                      'Name': 'pRegion',
                      'Value': 'UK'
                  }])
    ]
    # create an instance of TM1py.Objects.Chore in python
    c = Chore(name='TM1py_' + str(uuid.uuid4()),
              start_time=ChoreStartTime(now.year, now.month, now.day, now.hour,
                                        now.minute, now.second),
              dst_sensitivity=False,
              active=True,
              execution_mode='SingleCommit',
              frequency=frequency,
              tasks=tasks)
    # create the new chore in TM1
    tm1.chores.create(c)
Esempio n. 10
0
    def test_3update_chore(self):
        # get chore
        c = self.tm1.chores.get(self.chore_name)

        # update all properties
        # update start time
        start_time = datetime.now()
        c._start_time = ChoreStartTime(start_time.year, start_time.month,
                                       start_time.day, start_time.hour,
                                       start_time.minute, start_time.second)
        # update frequency
        frequency_days = int(random.uniform(0, 355))
        frequency_hours = int(random.uniform(0, 23))
        frequency_minutes = int(random.uniform(0, 59))
        frequency_seconds = int(random.uniform(0, 59))
        c._frequency = ChoreFrequency(days=frequency_days,
                                      hours=frequency_hours,
                                      minutes=frequency_minutes,
                                      seconds=frequency_seconds)

        # update tasks
        tasks = [
            ChoreTask(0,
                      process_name2,
                      parameters=[{
                          'Name': 'pRegion',
                          'Value': 'DE'
                      }]),
            ChoreTask(1,
                      process_name2,
                      parameters=[{
                          'Name': 'pRegion',
                          'Value': 'ES'
                      }]),
            ChoreTask(2,
                      process_name2,
                      parameters=[{
                          'Name': 'pRegion',
                          'Value': 'US'
                      }])
        ]
        c._tasks = tasks

        # execution mode
        c._execution_mode = "SingleCommit"

        # activate
        c.deactivate()

        # update chore in TM1
        self.tm1.chores.update(c)

        # get chore and check all properties
        c = self.tm1.chores.get(chore_name=self.chore_name)
        self.assertEqual(c._start_time._datetime.replace(microsecond=0),
                         start_time.replace(microsecond=0))
        self.assertEqual(c._name, self.chore_name)
        self.assertEqual(c._dst_sensitivity, False)
        self.assertEqual(c._active, False)
        self.assertEqual(c._execution_mode, 'SingleCommit')
        self.assertEqual(c._frequency._days, str(frequency_days))
        self.assertEqual(c._frequency._hours, str(frequency_hours).zfill(2))
        self.assertEqual(c._frequency._minutes,
                         str(frequency_minutes).zfill(2))
        self.assertEqual(c._frequency._seconds,
                         str(frequency_seconds).zfill(2))
        for task1, task2 in zip(tasks, c._tasks):
            self.assertEqual(task1, task2)