Esempio n. 1
0
    def testReset(self):
        with self.cached_session() as sess:
            reader = io_ops.IdentityReader("test_reader")
            work_completed = reader.num_work_units_completed()
            produced = reader.num_records_produced()
            queue = data_flow_ops.FIFOQueue(99, [dtypes.string], shapes=())
            queued_length = queue.size()
            key, value = reader.read(queue)

            queue.enqueue_many([["X", "Y", "Z"]]).run()
            self._ExpectRead(sess, key, value, b"X")
            self.assertLess(0, queued_length.eval())
            self.assertAllEqual(1, produced.eval())

            self._ExpectRead(sess, key, value, b"Y")
            self.assertLess(0, work_completed.eval())
            self.assertAllEqual(2, produced.eval())

            reader.reset().run()
            self.assertAllEqual(0, work_completed.eval())
            self.assertAllEqual(0, produced.eval())
            self.assertAllEqual(1, queued_length.eval())
            self._ExpectRead(sess, key, value, b"Z")

            queue.enqueue_many([["K", "L"]]).run()
            self._ExpectRead(sess, key, value, b"K")
Esempio n. 2
0
    def testReset(self):
        reader = io_ops.IdentityReader("test_reader")
        work_completed = reader.num_work_units_completed()
        produced = reader.num_records_produced()
        queue = data_flow_ops.FIFOQueue(99, [dtypes.string], shapes=())
        queued_length = queue.size()
        key, value = reader.read(queue)

        self.evaluate(queue.enqueue_many([["X", "Y", "Z"]]))
        self._ExpectRead(key, value, b"X")
        self.assertLess(0, self.evaluate(queued_length))
        self.assertAllEqual(1, self.evaluate(produced))

        self._ExpectRead(key, value, b"Y")
        self.assertLess(0, self.evaluate(work_completed))
        self.assertAllEqual(2, self.evaluate(produced))

        self.evaluate(reader.reset())
        self.assertAllEqual(0, self.evaluate(work_completed))
        self.assertAllEqual(0, self.evaluate(produced))
        self.assertAllEqual(1, self.evaluate(queued_length))
        self._ExpectRead(key, value, b"Z")

        self.evaluate(queue.enqueue_many([["K", "L"]]))
        self._ExpectRead(key, value, b"K")
Esempio n. 3
0
    def testOneEpoch(self):
        with self.cached_session() as sess:
            reader = io_ops.IdentityReader("test_reader")
            work_completed = reader.num_work_units_completed()
            produced = reader.num_records_produced()
            queue = data_flow_ops.FIFOQueue(99, [dtypes.string], shapes=())
            queued_length = queue.size()
            key, value = reader.read(queue)

            self.assertAllEqual(0, work_completed.eval())
            self.assertAllEqual(0, produced.eval())
            self.assertAllEqual(0, queued_length.eval())

            queue.enqueue_many([["A", "B", "C"]]).run()
            queue.close().run()
            self.assertAllEqual(3, queued_length.eval())

            self._ExpectRead(sess, key, value, b"A")
            self.assertAllEqual(1, produced.eval())

            self._ExpectRead(sess, key, value, b"B")

            self._ExpectRead(sess, key, value, b"C")
            self.assertAllEqual(3, produced.eval())
            self.assertAllEqual(0, queued_length.eval())

            with self.assertRaisesOpError(
                    "is closed and has insufficient elements "
                    "\\(requested 1, current size 0\\)"):
                sess.run([key, value])

            self.assertAllEqual(3, work_completed.eval())
            self.assertAllEqual(3, produced.eval())
            self.assertAllEqual(0, queued_length.eval())
Esempio n. 4
0
    def testSerializeRestore(self):
        with self.cached_session() as sess:
            reader = io_ops.IdentityReader("test_reader")
            produced = reader.num_records_produced()
            queue = data_flow_ops.FIFOQueue(99, [dtypes.string], shapes=())
            queue.enqueue_many([["X", "Y", "Z"]]).run()
            key, value = reader.read(queue)

            self._ExpectRead(sess, key, value, b"X")
            self.assertAllEqual(1, produced.eval())
            state = reader.serialize_state().eval()

            self._ExpectRead(sess, key, value, b"Y")
            self._ExpectRead(sess, key, value, b"Z")
            self.assertAllEqual(3, produced.eval())

            queue.enqueue_many([["Y", "Z"]]).run()
            queue.close().run()
            reader.restore_state(state).run()
            self.assertAllEqual(1, produced.eval())
            self._ExpectRead(sess, key, value, b"Y")
            self._ExpectRead(sess, key, value, b"Z")
            with self.assertRaisesOpError(
                    "is closed and has insufficient elements "
                    "\\(requested 1, current size 0\\)"):
                sess.run([key, value])
            self.assertAllEqual(3, produced.eval())

            self.assertEqual(bytes, type(state))

            with self.assertRaises(ValueError):
                reader.restore_state([])

            with self.assertRaises(ValueError):
                reader.restore_state([state, state])

            with self.assertRaisesOpError(
                    "Could not parse state for IdentityReader 'test_reader'"):
                reader.restore_state(state[1:]).run()

            with self.assertRaisesOpError(
                    "Could not parse state for IdentityReader 'test_reader'"):
                reader.restore_state(state[:-1]).run()

            with self.assertRaisesOpError(
                    "Could not parse state for IdentityReader 'test_reader'"):
                reader.restore_state(state + b"ExtraJunk").run()

            with self.assertRaisesOpError(
                    "Could not parse state for IdentityReader 'test_reader'"):
                reader.restore_state(b"PREFIX" + state).run()

            with self.assertRaisesOpError(
                    "Could not parse state for IdentityReader 'test_reader'"):
                reader.restore_state(b"BOGUS" + state[5:]).run()
Esempio n. 5
0
  def testMultipleEpochs(self):
    reader = io_ops.IdentityReader("test_reader")
    queue = data_flow_ops.FIFOQueue(99, [dtypes.string], shapes=())
    enqueue = queue.enqueue_many([["DD", "EE"]])
    key, value = reader.read(queue)

    self.evaluate(enqueue)
    self._ExpectRead(key, value, b"DD")
    self._ExpectRead(key, value, b"EE")
    self.evaluate(enqueue)
    self._ExpectRead(key, value, b"DD")
    self._ExpectRead(key, value, b"EE")
    self.evaluate(enqueue)
    self._ExpectRead(key, value, b"DD")
    self._ExpectRead(key, value, b"EE")
    self.evaluate(queue.close())
    with self.assertRaisesOpError("is closed and has insufficient elements "
                                  "\\(requested 1, current size 0\\)"):
      self.evaluate([key, value])