예제 #1
0
    def testGetTimeOfDay(self):
        """Tests the GetTimeOfDay function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')

        time_of_day_tuple = fake_time_object.GetTimeOfDay()
        self.assertEqual(time_of_day_tuple, (21, 6, 31))

        fake_time_object = fake_time.FakeTime()
        fake_time_object._number_of_seconds = None

        time_of_day_tuple = fake_time_object.GetTimeOfDay()
        self.assertEqual(time_of_day_tuple, (None, None, None))
예제 #2
0
    def testCopyToDateTimeString(self):
        """Tests the CopyToDateTimeString function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')

        date_time_string = fake_time_object.CopyToDateTimeString()
        self.assertEqual(date_time_string, '2010-08-12 21:06:31.546875')

        fake_time_object = fake_time.FakeTime()
        fake_time_object._number_of_seconds = None

        date_time_string = fake_time_object.CopyToDateTimeString()
        self.assertIsNone(date_time_string)
예제 #3
0
    def testGetDate(self):
        """Tests the GetDate function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')

        date_tuple = fake_time_object.GetDate()
        self.assertEqual(date_tuple, (2010, 8, 12))

        fake_time_object = fake_time.FakeTime()
        fake_time_object._number_of_seconds = None

        date_tuple = fake_time_object.GetDate()
        self.assertEqual(date_tuple, (None, None, None))
예제 #4
0
    def testGetNormalizedTimestamp(self):
        """Tests the _GetNormalizedTimestamp function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')

        normalized_timestamp = fake_time_object._GetNormalizedTimestamp()
        self.assertEqual(normalized_timestamp, 1281647191.546875)

        fake_time_object = fake_time.FakeTime()
        fake_time_object._number_of_seconds = None

        normalized_timestamp = fake_time_object._GetNormalizedTimestamp()
        self.assertIsNone(normalized_timestamp)
예제 #5
0
파일: mediator.py 프로젝트: hyuunnn/plaso
    def testProduceEventWithEventData(self):
        """Tests the ProduceEventWithEventData method."""
        knowledge_base_object = knowledge_base.KnowledgeBase()
        parser_mediator = mediator.ParserMediator(knowledge_base_object)

        storage_writer = fake_writer.FakeStorageWriter()
        parser_mediator.SetStorageWriter(storage_writer)

        storage_writer.Open()

        event_data_stream = events.EventDataStream()
        parser_mediator.ProduceEventDataStream(event_data_stream)

        date_time = fake_time.FakeTime()
        event_with_timestamp = time_events.DateTimeValuesEvent(
            date_time, definitions.TIME_DESCRIPTION_WRITTEN)
        event_with_timestamp.parser = 'test_parser'
        event_data = events.EventData()
        event_data.parser = 'test_parser'

        parser_mediator.ProduceEventWithEventData(event_with_timestamp,
                                                  event_data)
        self.assertEqual(storage_writer.number_of_events, 1)
        self.assertEqual(storage_writer.number_of_extraction_warnings, 0)
        self.assertEqual(storage_writer.number_of_recovery_warnings, 0)

        event_without_timestamp = events.EventObject()
        event_without_timestamp.parser = 'test_parser'
        with self.assertRaises(errors.InvalidEvent):
            parser_mediator.ProduceEventWithEventData(event_without_timestamp,
                                                      event_data)
예제 #6
0
    def testCopyToDateTimeStringISO8601(self):
        """Tests the CopyToDateTimeStringISO8601 function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')

        date_time_string = fake_time_object.CopyToDateTimeStringISO8601()
        self.assertEqual(date_time_string, '2010-08-12T21:06:31.546875+00:00')
예제 #7
0
    def testCopyFromDateTimeString(self):
        """Tests the CopyFromDateTimeString function."""
        fake_time_object = fake_time.FakeTime()

        fake_time_object.CopyFromDateTimeString('2010-08-12')
        self.assertEqual(fake_time_object._number_of_seconds, 1281571200)
        self.assertIsNone(fake_time_object._microseconds)
        self.assertEqual(fake_time_object._time_zone_offset, 0)

        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31')
        self.assertEqual(fake_time_object._number_of_seconds, 1281647191)
        self.assertIsNone(fake_time_object._microseconds)
        self.assertEqual(fake_time_object._time_zone_offset, 0)

        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')
        self.assertEqual(fake_time_object._number_of_seconds, 1281647191)
        self.assertEqual(fake_time_object._microseconds, 546875)
        self.assertEqual(fake_time_object._time_zone_offset, 0)

        fake_time_object.CopyFromDateTimeString(
            '2010-08-12 21:06:31.546875-01:00')
        self.assertEqual(fake_time_object._number_of_seconds, 1281647191)
        self.assertEqual(fake_time_object._microseconds, 546875)
        self.assertEqual(fake_time_object._time_zone_offset, -60)

        fake_time_object.CopyFromDateTimeString(
            '2010-08-12 21:06:31.546875+01:00')
        self.assertEqual(fake_time_object._number_of_seconds, 1281647191)
        self.assertEqual(fake_time_object._microseconds, 546875)
        self.assertEqual(fake_time_object._time_zone_offset, 60)

        fake_time_object.CopyFromDateTimeString('1601-01-02 00:00:00')
        self.assertEqual(fake_time_object._number_of_seconds, -11644387200)
        self.assertIsNone(fake_time_object._microseconds)
        self.assertEqual(fake_time_object._time_zone_offset, 0)
예제 #8
0
 def testGetPlasoTimestamp(self):
     """Tests the GetPlasoTimestamp function."""
     fake_time_object = fake_time.FakeTime()
     fake_time_object._normalized_timestamp = decimal.Decimal(
         '1333794697.6252465')
     plaso_timestamp = fake_time_object.GetPlasoTimestamp()
     self.assertEqual(plaso_timestamp, 1333794697625247)
예제 #9
0
    def testCopyToStatTimeTuple(self):
        """Tests the CopyToStatTimeTuple function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromString(u'2010-08-12 21:06:31.546875')

        expected_stat_time_tuple = (1281647191, 5468750)
        stat_time_tuple = fake_time_object.CopyToStatTimeTuple()
        self.assertEqual(stat_time_tuple, expected_stat_time_tuple)

        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromString(u'2010-08-12 21:06:31')

        expected_stat_time_tuple = (1281647191, None)
        stat_time_tuple = fake_time_object.CopyToStatTimeTuple()
        self.assertEqual(stat_time_tuple, expected_stat_time_tuple)

        fake_time_object = fake_time.FakeTime()
        fake_time_object._number_of_seconds = None

        expected_stat_time_tuple = (None, None)
        stat_time_tuple = fake_time_object.CopyToStatTimeTuple()
        self.assertEqual(stat_time_tuple, expected_stat_time_tuple)
예제 #10
0
    def testGetPlasoTimestamp(self):
        """Tests the GetPlasoTimestamp function."""
        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromString(u'2010-08-12 21:06:31.546875')

        expected_micro_posix_number_of_seconds = 1281647191546875
        micro_posix_number_of_seconds = fake_time_object.GetPlasoTimestamp()
        self.assertEqual(micro_posix_number_of_seconds,
                         expected_micro_posix_number_of_seconds)

        fake_time_object = fake_time.FakeTime()
        fake_time_object.CopyFromString(u'2010-08-12 21:06:31')

        expected_micro_posix_number_of_seconds = 1281647191000000
        micro_posix_number_of_seconds = fake_time_object.GetPlasoTimestamp()
        self.assertEqual(micro_posix_number_of_seconds,
                         expected_micro_posix_number_of_seconds)

        fake_time_object = fake_time.FakeTime()
        fake_time_object._number_of_seconds = None

        micro_posix_number_of_seconds = fake_time_object.GetPlasoTimestamp()
        self.assertIsNone(micro_posix_number_of_seconds)
예제 #11
0
  def __init__(
      self, resolver_context, file_system, path_spec, file_entry_type=None,
      is_root=False):
    """Initializes a file entry.

    Args:
      resolver_context (Context): resolver context.
      file_system (FileSystem): file system.
      path_spec (PathSpec): path specification.
      file_entry_type (Optional[str]): file entry type.
      is_root (Optional[bool]): True if the file entry is the root file entry
          of the corresponding file system.
    """
    super(FakeFileEntry, self).__init__(
        resolver_context, file_system, path_spec, is_root=is_root,
        is_virtual=True)
    self._date_time = dfdatetime_fake_time.FakeTime()
    self._name = None
    self.entry_type = file_entry_type
예제 #12
0
    def testProduceEventWithEventData(self):
        """Tests the ProduceEventWithEventData method."""
        session = sessions.Session()
        storage_writer = fake_writer.FakeStorageWriter(session)
        storage_writer.Open()
        parsers_mediator = self._CreateParserMediator(storage_writer)

        event_with_timestamp = events.EventObject()
        event_with_timestamp.timestamp = fake_time.FakeTime()
        event_data = events.EventData()

        parsers_mediator.ProduceEventWithEventData(event_with_timestamp,
                                                   event_data)
        self.assertEqual(storage_writer.number_of_events, 1)

        event_without_timestamp = events.EventObject()
        with self.assertRaises(errors.InvalidEvent):
            parsers_mediator.ProduceEventWithEventData(event_without_timestamp,
                                                       event_data)
예제 #13
0
    def testCopyFromDateTimeString(self):
        """Tests the CopyFromDateTimeString function."""
        fake_time_object = fake_time.FakeTime()

        expected_number_of_seconds = 1281571200
        fake_time_object.CopyFromDateTimeString('2010-08-12')
        self.assertEqual(fake_time_object._number_of_seconds,
                         expected_number_of_seconds)
        self.assertIsNone(fake_time_object._microseconds)

        expected_number_of_seconds = 1281647191
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31')
        self.assertEqual(fake_time_object._number_of_seconds,
                         expected_number_of_seconds)
        self.assertIsNone(fake_time_object._microseconds)

        expected_number_of_seconds = 1281647191
        fake_time_object.CopyFromDateTimeString('2010-08-12 21:06:31.546875')
        self.assertEqual(fake_time_object._number_of_seconds,
                         expected_number_of_seconds)
        self.assertEqual(fake_time_object._microseconds, 546875)

        expected_number_of_seconds = 1281650791
        fake_time_object.CopyFromDateTimeString(
            '2010-08-12 21:06:31.546875-01:00')
        self.assertEqual(fake_time_object._number_of_seconds,
                         expected_number_of_seconds)
        self.assertEqual(fake_time_object._microseconds, 546875)

        expected_number_of_seconds = 1281643591
        fake_time_object.CopyFromDateTimeString(
            '2010-08-12 21:06:31.546875+01:00')
        self.assertEqual(fake_time_object._number_of_seconds,
                         expected_number_of_seconds)
        self.assertEqual(fake_time_object._microseconds, 546875)

        expected_number_of_seconds = -11644387200
        fake_time_object.CopyFromDateTimeString('1601-01-02 00:00:00')
        self.assertEqual(fake_time_object._number_of_seconds,
                         expected_number_of_seconds)
        self.assertIsNone(fake_time_object._microseconds)
예제 #14
0
    def testProduceEventWithEventData(self):
        """Tests the ProduceEventWithEventData method."""
        session = sessions.Session()
        storage_writer = fake_writer.FakeStorageWriter(session)
        storage_writer.Open()
        parsers_mediator = self._CreateParserMediator(storage_writer)

        date_time = fake_time.FakeTime()
        event_with_timestamp = time_events.DateTimeValuesEvent(
            date_time, definitions.TIME_DESCRIPTION_WRITTEN)
        event_data = events.EventData()

        parsers_mediator.ProduceEventWithEventData(event_with_timestamp,
                                                   event_data)
        self.assertEqual(storage_writer.number_of_errors, 0)
        self.assertEqual(storage_writer.number_of_events, 1)

        event_without_timestamp = events.EventObject()
        with self.assertRaises(errors.InvalidEvent):
            parsers_mediator.ProduceEventWithEventData(event_without_timestamp,
                                                       event_data)
예제 #15
0
    def AddFileEntry(self,
                     path,
                     file_entry_type=definitions.FILE_ENTRY_TYPE_FILE,
                     file_data=None,
                     link_data=None):
        """Adds a fake file entry.

    Args:
      path: the path of the file entry.
      file_entry_type: optional type of the file entry object.
      file_data: optional data of the fake file-like object.
      link_data: optional link data of the fake file entry object.

    Raises:
      KeyError: if the path already exists.
      ValueError: if the file data is set but the file entry type is not a file
                  or if the link data is set but the file entry type is not
                  a link.
    """
        if path in self._paths:
            raise KeyError(
                u'File entry already set for path: {0:s}.'.format(path))

        if file_data and file_entry_type != definitions.FILE_ENTRY_TYPE_FILE:
            raise ValueError(u'File data set for non-file file entry type.')

        if link_data and file_entry_type != definitions.FILE_ENTRY_TYPE_LINK:
            raise ValueError(u'Link data set for non-link file entry type.')

        stat_object = vfs_stat.VFSStat()

        # File data stat information.
        if file_data is not None:
            stat_object.size = len(file_data)

        # Date and time stat information.
        date_time_values = dfdatetime_fake_time.FakeTime()

        stat_time, stat_time_nano = date_time_values.CopyToStatTimeTuple()
        if stat_time is not None:
            stat_object.atime = stat_time
            stat_object.atime_nano = stat_time_nano
            stat_object.ctime = stat_time
            stat_object.ctime_nano = stat_time_nano
            stat_object.mtime = stat_time
            stat_object.mtime_nano = stat_time_nano

        # Ownership and permissions stat information.

        # File entry type stat information.
        stat_object.type = file_entry_type

        # Other stat information.

        if file_data:
            path_data = file_data
        elif link_data:
            path_data = link_data
        else:
            path_data = None

        self._paths[path] = (stat_object, path_data)