def testTimestamp(self):

    class BlarghParser(parsers.SingleFileParser):

      supported_artifacts = ["Blargh"]

      def ParseFile(
          self,
          knowledge_base: rdf_client.KnowledgeBase,
          pathspec: rdf_paths.PathSpec,
          filedesc: file_store.BlobStream,
      ) -> Iterable[rdfvalue.RDFBytes]:
        del knowledge_base, pathspec  # Unused.
        return [rdfvalue.RDFBytes(filedesc.Read())]

    with parser_test_lib._ParserContext("Blargh", BlarghParser):
      factory = parsers.ArtifactParserFactory("Blargh")

      stat_entry = rdf_client_fs.StatEntry()
      stat_entry.pathspec.path = "foo/bar/baz"
      stat_entry.pathspec.pathtype = rdf_paths.PathSpec.PathType.OS

      self._WriteFile(stat_entry.pathspec.path, b"OLD")

      time.Step()
      timestamp = rdfvalue.RDFDatetime.Now()

      self._WriteFile(stat_entry.pathspec.path, b"NEW")

      applicator = artifact.ParserApplicator(
          factory,
          client_id=self.client_id,
          knowledge_base=rdf_client.KnowledgeBase(),
          timestamp=timestamp)
      applicator.Apply([stat_entry])

      errors = list(applicator.Errors())
      self.assertEmpty(errors)

      responses = list(applicator.Responses())
      self.assertLen(responses, 1)
      self.assertEqual(responses[0], b"OLD")
Exemple #2
0
  def testTimePassage(self):
    then = rdfvalue.RDFDatetime.Now()
    time.Step()
    now = rdfvalue.RDFDatetime.Now()

    self.assertLess(then, now)