def test_unique_by(self): g = event.EventGenerator() events = g.randomEvents(100) for e in events: e.host = "TEST" events[42].creation -= 100 events[42].host = "FOO" events[43].creation += 100 events[43].host = "FOO" events[44].arrival -= 100 events[44].host = "FOO" events[45].arrival += 100 events[45].host = "FOO" unique_by_creation_first = rulecomponents.unique_by("host", "creation", "first", lambda **kwargs: kwargs['query_events']) unique_by_creation_last = rulecomponents.unique_by("host", "creation", "last", lambda **kwargs: kwargs['query_events']) unique_by_arrival_first = rulecomponents.unique_by("host", "arrival", "first", lambda **kwargs: kwargs['query_events']) unique_by_arrival_last = rulecomponents.unique_by("host", "arrival", "last", lambda **kwargs: kwargs['query_events']) events_unique_creation_first = unique_by_creation_first(query_events = events) events_unique_creation_last = unique_by_creation_last(query_events = events) events_unique_arrival_first = unique_by_arrival_first(query_events = events) events_unique_arrival_last = unique_by_arrival_last(query_events = events) # number of selected events self.assert_(len(events_unique_creation_first) == 2) self.assert_(len(events_unique_creation_last) == 2) self.assert_(len(events_unique_arrival_first) == 2) self.assert_(len(events_unique_arrival_last) == 2) # event with host FOO fooevent = lambda evts: [e for e in evts if e.host=="FOO"][0] self.assert_(fooevent(events_unique_creation_first) == events[42]) self.assert_(fooevent(events_unique_creation_last) == events[43]) self.assert_(fooevent(events_unique_arrival_first) == events[44]) self.assert_(fooevent(events_unique_arrival_last) == events[45]) # empty list empty = unique_by_creation_first(query_events = []) self.assert_(len(empty) == 0)
def test_unique_by(self): g = event.EventGenerator() events = g.randomEvents(100) for e in events: e.host = "TEST" events[42].creation -= 100 events[42].host = "FOO" events[43].creation += 100 events[43].host = "FOO" events[44].arrival -= 100 events[44].host = "FOO" events[45].arrival += 100 events[45].host = "FOO" unique_by_creation_first = rulecomponents.unique_by( "host", "creation", "first", lambda **kwargs: kwargs['query_events']) unique_by_creation_last = rulecomponents.unique_by( "host", "creation", "last", lambda **kwargs: kwargs['query_events']) unique_by_arrival_first = rulecomponents.unique_by( "host", "arrival", "first", lambda **kwargs: kwargs['query_events']) unique_by_arrival_last = rulecomponents.unique_by( "host", "arrival", "last", lambda **kwargs: kwargs['query_events']) events_unique_creation_first = unique_by_creation_first( query_events=events) events_unique_creation_last = unique_by_creation_last( query_events=events) events_unique_arrival_first = unique_by_arrival_first( query_events=events) events_unique_arrival_last = unique_by_arrival_last( query_events=events) # number of selected events self.assert_(len(events_unique_creation_first) == 2) self.assert_(len(events_unique_creation_last) == 2) self.assert_(len(events_unique_arrival_first) == 2) self.assert_(len(events_unique_arrival_last) == 2) # event with host FOO fooevent = lambda evts: [e for e in evts if e.host == "FOO"][0] self.assert_(fooevent(events_unique_creation_first) == events[42]) self.assert_(fooevent(events_unique_creation_last) == events[43]) self.assert_(fooevent(events_unique_arrival_first) == events[44]) self.assert_(fooevent(events_unique_arrival_last) == events[45]) # empty list empty = unique_by_creation_first(query_events=[]) self.assert_(len(empty) == 0)
def test_unique_by_attribute(self): g = event.EventGenerator() events = g.randomEvents(100) events[42].setAttribute("foo", "bar") events[42].creation -= 100 events[43].setAttribute("foo", "bar") events[44].setAttribute("foo", "bar") events[45].setAttribute("foo", "baz") unique_by_attribute_foo = rulecomponents.unique_by("attributes.foo", "creation", "first", lambda **kwargs: kwargs['query_events']) unique_events = unique_by_attribute_foo(query_events = events) # event with host FOO self.assert_(len(unique_events) == 3) # "bar", "baz" and "" barevent = lambda evts: [e for e in evts if e.getAttribute("foo")=="bar"][0] self.assert_(barevent(unique_events) == events[42])
def test_unique_by_attribute(self): g = event.EventGenerator() events = g.randomEvents(100) events[42].setAttribute("foo", "bar") events[42].creation -= 100 events[43].setAttribute("foo", "bar") events[44].setAttribute("foo", "bar") events[45].setAttribute("foo", "baz") unique_by_attribute_foo = rulecomponents.unique_by( "attributes.foo", "creation", "first", lambda **kwargs: kwargs['query_events']) unique_events = unique_by_attribute_foo(query_events=events) # event with host FOO self.assert_(len(unique_events) == 3) # "bar", "baz" and "" barevent = lambda evts: [ e for e in evts if e.getAttribute("foo") == "bar" ][0] self.assert_(barevent(unique_events) == events[42])