def test_event_file_writer(self):
        run_path = tempfile.mkdtemp()
        ew = EventFileWriter(run_path)
        events = [
            LoggedEventSpec(name="test",
                            kind="metric",
                            event=V1Event.make(step=1, metric=1.12)),
            LoggedEventSpec(name="test",
                            kind="metric",
                            event=V1Event.make(step=12, metric=1.12)),
        ]
        for e in events:
            ew.add_event(e)
        ew.flush()
        assert len(os.listdir(run_path + "/events")) == 1
        assert len(os.listdir(run_path + "/events/metric")) == 1

        results = V1Events.read(name="test",
                                kind="metric",
                                data=run_path + "/events/metric/test.plx")
        assert results.name == "test"
        assert results.kind == "metric"
        assert len(results.df.values) == 2
        assert results.get_event_at(0).to_dict() == events[0].event.to_dict()
        assert results.get_event_at(1).to_dict() == events[1].event.to_dict()

        # Adding more events
        new_events = [
            LoggedEventSpec(name="test",
                            kind="metric",
                            event=V1Event.make(step=13, metric=1.12)),
            LoggedEventSpec(name="test",
                            kind="metric",
                            event=V1Event.make(step=14, metric=1.12)),
            LoggedEventSpec(name="test2",
                            kind="metric",
                            event=V1Event.make(step=14, metric=1.12)),
            LoggedEventSpec(name="test",
                            kind="html",
                            event=V1Event.make(step=12, html="some div")),
        ]
        for e in new_events:
            ew.add_event(e)
        ew.flush()

        assert len(os.listdir(run_path + "/events")) == 2  # metric and html
        assert len(os.listdir(run_path + "/events/metric")) == 2

        results = V1Events.read(name="test",
                                kind="metric",
                                data=run_path + "/events/metric/test.plx")
        assert results.name == "test"
        assert results.kind == "metric"
        assert len(results.df.values) == 4
        assert results.get_event_at(0).to_dict() == events[0].event.to_dict()
        assert results.get_event_at(1).to_dict() == events[1].event.to_dict()
        assert results.get_event_at(
            2).to_dict() == new_events[0].event.to_dict()
        assert results.get_event_at(
            3).to_dict() == new_events[1].event.to_dict()
    def test_write_batch_events_file_writer(self):
        run_path = tempfile.mkdtemp()
        ew = EventFileWriter(run_path)
        events = [
            LoggedEventSpec(
                name="test", kind="metric", event=V1Event.make(step=1, metric=1.12)
            ),
            LoggedEventSpec(
                name="test", kind="metric", event=V1Event.make(step=12, metric=1.12)
            ),
        ]
        ew.add_events(events)
        ew.flush()
        assert len(os.listdir(run_path + "/events")) == 1
        assert len(os.listdir(run_path + "/events/metric")) == 1

        results = V1Events.read(
            name="test", kind="metric", data=run_path + "/events/metric/test.plx"
        )
        assert results.name == "test"
        assert results.kind == "metric"
        assert len(results.df.values) == 2
        assert results.get_event_at(0).to_dict() == events[0].event.to_dict()
        assert results.get_event_at(1).to_dict() == events[1].event.to_dict()