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)
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)
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)
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)
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))
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)
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)
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)
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)