예제 #1
0
    def test_copytruncate(self):
        tail = FileTail(filename=self.test_log)

        lines = ["line %d" % i for i in range(5)]
        for line in lines:
            self.write_log(line)
        assert_that(tail.readlines(), equal_to(lines))

        # mock copytruncate mechanic
        copyfile(self.test_log, self.test_log_rotated)
        with open(self.test_log, 'w') as file_to_truncate:
            file_to_truncate.truncate()

        next_lines = ["line %d" % i for i in range(5, 10)]
        for line in next_lines:
            self.write_log(line)

        # check offset is updated to the beginning
        assert_that(tail.readlines(), equal_to(next_lines))

        # resume normal behavior
        final_lines = ["line %d" % i for i in range(10, 15)]
        for line in final_lines:
            self.write_log(line)
        assert_that(tail.readlines(), equal_to(final_lines))
예제 #2
0
    def test_cache_offset(self):
        tail = FileTail(filename=self.test_log)
        self.write_log('something')
        tail.readlines()
        old_offset = tail._offset

        # del tail object
        del tail

        # create new
        tail = FileTail(filename=self.test_log)
        assert_that(tail._offset, equal_to(old_offset))
예제 #3
0
    def test_cache_offset(self):
        tail = FileTail(filename=self.test_log)
        self.write_log('something')
        tail.readlines()
        old_offset = tail._offset

        # del tail object
        del tail

        # create new
        tail = FileTail(filename=self.test_log)
        assert_that(tail._offset, equal_to(old_offset))
예제 #4
0
    def test_no_new_lines(self):
        # check one new line
        tail = FileTail(filename=self.test_log)
        self.write_log('something')
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(1))

        # check no new lines
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(0))

        # and check again one new line
        tail = FileTail(filename=self.test_log)
        self.write_log('something')
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(1))
예제 #5
0
    def test_no_new_lines(self):
        # check one new line
        tail = FileTail(filename=self.test_log)
        self.write_log('something')
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(1))

        # check no new lines
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(0))

        # and check again one new line
        tail = FileTail(filename=self.test_log)
        self.write_log('something')
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(1))
예제 #6
0
    def test_read_new_lines(self):
        tail = FileTail(filename=self.test_log)

        # write messages and read them
        for i in xrange(10):
            line = "this is %s line" % i
            self.write_log(line)
            new_lines = tail.readlines()
            assert_that(new_lines, has_length(1))
            assert_that(new_lines.pop(), equal_to(line))
예제 #7
0
    def test_read_new_lines(self):
        tail = FileTail(filename=self.test_log)

        # write messages and read them
        for i in xrange(10):
            line = "this is %s line" % i
            self.write_log(line)
            new_lines = tail.readlines()
            assert_that(new_lines, has_length(1))
            assert_that(new_lines.pop(), equal_to(line))
예제 #8
0
    def test_rotate(self):
        tail = FileTail(filename=self.test_log)

        # rotate it
        os.rename(self.test_log, self.test_log_rotated)

        # write something in a new one
        self.write_log("from a new file")

        # read tail and get two lines
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(1))
        assert_that(new_lines, equal_to(['from a new file']))
예제 #9
0
    def test_rotate(self):
        tail = FileTail(filename=self.test_log)

        # rotate it
        os.rename(self.test_log, self.test_log_rotated)

        # write something in a new one
        self.write_log("from a new file")

        # read tail and get two lines
        new_lines = tail.readlines()
        assert_that(new_lines, has_length(1))
        assert_that(new_lines, equal_to(['from a new file']))
예제 #10
0
 def test_keeps_trailing_spaces(self):
     tail = FileTail(filename=self.test_log)
     self.write_log('foo bar baz    ')
     lines = tail.readlines()
     assert_that(lines, has_length(1))
     assert_that(lines[0], ends_with('    '))