def testGetMessageDateTimesForSegment(self): messagesPerDay = 7 guardTimeMinutes = 15 dayStart = time(hour=9, minute=0, second=0) dayEnd = time(hour=21, minute=0, second=0) startDateTime = datetime(2011, 12, 25, 9, 0, 0) endDateTime = datetime(2011, 12, 25, 21, 0, 0) length = endDateTime - startDateTime segment = DaySegment(startDateTime, length, dayStart, dayEnd) segment.setDayStart(startDateTime) dayLength = datetime(2011, 12, 25, dayEnd.hour, dayEnd.minute, dayEnd.second) - datetime( 2011, 12, 25, dayStart.hour, dayStart.minute, dayStart.second ) for iteration in xrange(1, 100): result = self.messageGenerator.getMessageDateTimesForSegment( segment, messagesPerDay, dayLength, guardTimeMinutes ) self.assertEqual(7, len(result), "should have exactly 7 times, but was %d" % len(result)) self.assertTrue(result[-1].hour >= 19, "Last interval should be larger than 19.") guardTimeTimeDelta = timedelta(minutes=guardTimeMinutes) for index in xrange(1, 6): distance = result[index] - result[index - 1] self.assertTrue( ( distance < guardTimeTimeDelta, "distance is larger than guard time: %s < %s" % (distance, guardTimeTimeDelta), ) )
def testGetNumberOfMessagesForSegmentPartialDay(self): messagesPerDay = 7 dayStart = time(hour=9, minute=0, second=0) dayEnd = time(hour=21, minute=0, second=0) startDateTime = datetime(2011, 12, 25, 19, 0, 0) endDateTime = datetime(2011, 12, 25, 21, 0, 0) length = endDateTime - startDateTime segment = DaySegment(startDateTime, length, dayStart, dayEnd) segment.setDayStart(startDateTime) expectedMessagesForSegment = 1 dayLength = datetime(2011, 12, 25, dayEnd.hour, dayEnd.minute, dayEnd.second) - datetime( 2011, 12, 25, dayStart.hour, dayStart.minute, dayStart.second ) result = self.messageGenerator.getNumberOfMessagesForSegment(segment, messagesPerDay, dayLength) self.assertEqual(expectedMessagesForSegment, result)
def xtestGetMessageDateTimesForSegmentPutInFile(self): messagesPerDay = 7 guardTimeMinutes = 15 dayStart = time(hour=9, minute=0, second=0) dayEnd = time(hour=21, minute=0, second=0) startDateTime = datetime(2011, 12, 25, 9, 0, 0) endDateTime = datetime(2011, 12, 25, 21, 0, 0) length = endDateTime - startDateTime segment = DaySegment(startDateTime, length, dayStart, dayEnd) segment.setDayStart(startDateTime) dayLength = datetime(2011, 12, 25, dayEnd.hour, dayEnd.minute, dayEnd.second) - datetime( 2011, 12, 25, dayStart.hour, dayStart.minute, dayStart.second ) contents = "" for iteration in xrange(1, 10000): result = self.messageGenerator.getMessageDateTimesForSegment( segment, messagesPerDay, dayLength, guardTimeMinutes ) for item in result: contents += "%s:%s\t" % (item.hour, item.minute) contents += "\n" f = open("message-time-series.txt", "w") f.write(contents) f.close()