Example #1
0
 def test__create_writers_with_multi_stage_and_map_but_different_path(self):
     """
     Both serializers are created, the xml serializer is *not* cached
     because the paths differ.
     """
     self._init_map()
     job_id = self.jobs.next()
     nrml_path = self.files.next()
     result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path,
                                           self.x, self.d, True)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     xml_serializer = self.xmls.next() - 1
     self.assertEqual([self.dbs.next() - 1, xml_serializer],
                      [rw() for rw in result.writers])
     # We are passing different paths to the method under test. It will
     # thus call both constructors. The serializers returned are different.
     result = hazard_output._create_writer(job_id, ["db", "xml"],
                                           self.files.next(), self.x,
                                           self.d, True)
     self.assertEqual(2, self.d.call_count)
     self.assertEqual(2, self.x.call_count)
     self.assertEqual(
         [self.dbs.next() - 1, self.xmls.next() - 1],
         [rw() for rw in result.writers])
Example #2
0
 def test__create_writers_with_multi_stage_and_map(self):
     """
     Multi-stage XML serialization, both serializers are created, the XML
     serializer is cached.
     """
     self._init_map()
     job_id = self.jobs.next()
     nrml_path = self.files.next()
     result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path,
                                           self.x, self.d, True)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     xml_serializer = self.xmls.next() - 1
     self.assertEqual([self.dbs.next() - 1, xml_serializer],
                      [rw() for rw in result.writers])
     # Next time we call the method under test it will invoke only
     # the constructor for the db serializer and the cached xml serializer
     # is returned.
     # This only works if the function under test is called with the same
     # 'job_id' and 'nrml_path'.
     result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path,
                                           self.x, self.d, True)
     self.assertEqual(2, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     self.assertEqual([self.dbs.next() - 1, xml_serializer],
                      [rw() for rw in result.writers])
Example #3
0
 def test__create_writers_with_multi_stage_and_map(self):
     """
     Multi-stage XML serialization, both serializers are created, the XML
     serializer is cached.
     """
     self._init_map()
     job_id = self.jobs.next()
     nrml_path = self.files.next()
     result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path,
                                           self.x, self.d, True)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     xml_serializer = self.xmls.next() - 1
     self.assertEqual([self.dbs.next() - 1, xml_serializer],
                      [rw() for rw in result.writers])
     # Next time we call the method under test it will invoke only
     # the constructor for the db serializer and the cached xml serializer
     # is returned.
     # This only works if the function under test is called with the same
     # 'job_id' and 'nrml_path'.
     result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path,
                                           self.x, self.d, True)
     self.assertEqual(2, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     self.assertEqual([self.dbs.next() - 1, xml_serializer],
                      [rw() for rw in result.writers])
Example #4
0
 def test__create_writer_with_db_only_and_map(self):
     """Only the db writer is created."""
     self._init_map()
     result = hazard_output._create_writer(
         self.jobs.next(), ["db"], self.files.next(), self.x, self.d)
     self.assertEqual(0, self.x.call_count)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(self.dbs.next() - 1, result())
Example #5
0
 def test__create_writer_with_db_only_and_map(self):
     """Only the db writer is created."""
     self._init_map()
     result = hazard_output._create_writer(self.jobs.next(), ["db"],
                                           self.files.next(), self.x,
                                           self.d)
     self.assertEqual(0, self.x.call_count)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(self.dbs.next() - 1, result())
Example #6
0
 def test__create_writers_with_single_stage_and_map(self):
     """
     Both serializers are created, no caching of the XML serializers.
     """
     self._init_map()
     result = hazard_output._create_writer(
         self.jobs.next(), ["db", "xml"], self.files.next(), self.x, self.d)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     self.assertEqual([self.dbs.next() - 1, self.xmls.next() - 1],
                      [rw() for rw in result.writers])
     # Next time we call the method under test it will invoke the
     # constructors and the serializers returned are different.
     result = hazard_output._create_writer(
         self.jobs.next(), ["db", "xml"], self.files.next(), self.x, self.d)
     self.assertEqual(2, self.d.call_count)
     self.assertEqual(2, self.x.call_count)
     self.assertEqual([self.dbs.next() - 1, self.xmls.next() - 1],
                      [rw() for rw in result.writers])
Example #7
0
 def test__create_writers_with_multi_stage_and_map_but_different_path(self):
     """
     Both serializers are created, the xml serializer is *not* cached
     because the paths differ.
     """
     self._init_map()
     job_id = self.jobs.next()
     nrml_path = self.files.next()
     result = hazard_output._create_writer(job_id, ["db", "xml"], nrml_path,
                                           self.x, self.d, True)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     xml_serializer = self.xmls.next() - 1
     self.assertEqual([self.dbs.next() - 1, xml_serializer],
                      [rw() for rw in result.writers])
     # We are passing different paths to the method under test. It will
     # thus call both constructors. The serializers returned are different.
     result = hazard_output._create_writer(
         job_id, ["db", "xml"], self.files.next(), self.x, self.d, True)
     self.assertEqual(2, self.d.call_count)
     self.assertEqual(2, self.x.call_count)
     self.assertEqual([self.dbs.next() - 1,  self.xmls.next() - 1],
                      [rw() for rw in result.writers])
Example #8
0
 def test__create_writers_with_single_stage_and_map(self):
     """
     Both serializers are created, no caching of the XML serializers.
     """
     self._init_map()
     result = hazard_output._create_writer(self.jobs.next(), ["db", "xml"],
                                           self.files.next(), self.x,
                                           self.d)
     self.assertEqual(1, self.d.call_count)
     self.assertEqual(1, self.x.call_count)
     self.assertEqual(
         [self.dbs.next() - 1, self.xmls.next() - 1],
         [rw() for rw in result.writers])
     # Next time we call the method under test it will invoke the
     # constructors and the serializers returned are different.
     result = hazard_output._create_writer(self.jobs.next(), ["db", "xml"],
                                           self.files.next(), self.x,
                                           self.d)
     self.assertEqual(2, self.d.call_count)
     self.assertEqual(2, self.x.call_count)
     self.assertEqual(
         [self.dbs.next() - 1, self.xmls.next() - 1],
         [rw() for rw in result.writers])