def test_tagged_dim_matchs(): # not in table metadata assert_true(not tm.tagged_dim_matches(tagged_dim(':'), Field('ip_addr'))) assert_true(tm.tagged_dim_matches(tagged_dim(':'), Field('clientip'))) assert_true(tm.tagged_dim_matches(tagged_dim(':ip'), Field('clientip'))) assert_true( not tm.tagged_dim_matches(tagged_dim(':mac'), Field('clientip')))
def test_field_selector(): assert_equal(field_or_tagged_dim(' @f '), Field('f')) assert_equal(field_or_tagged_dim(Field('f')), Field('f')) assert_equal(field_or_tagged_dim('tag:dim'), tagged_dim('tag:dim')) assert_equal(field_or_tagged_dim(['tag', 'dim']), tagged_dim('tag:dim')) assert_equal(field_or_tagged_dim(tagged_dim('tag:dim')), tagged_dim('tag:dim'))
def test_parse_tagdim_field_list_fields1(): def f(x): res = parse_list_fieldselectors(x) return res assert_equal(f("*"), []) assert_equal(f(""), []) assert_equal(f("@F"), [Field('F')]) assert_equal(f("@F,@G"), [Field('F'), Field('G')]) assert_equal(f(":dim"), [tagged_dim("dim")]) assert_equal(f("tag:,:dim"), [tagged_dim('tag:'), tagged_dim("dim")])
def test_ds_rewrite_tagged_dim_to_or(): c = gbceq(tagged_dim(':ip'), '1.2.3.4') r = ds._rewrite_tagged_dim(c) expected = Or([ gbceq(Field('clientip'), '1.2.3.4'), gbceq(Field('serverip'), '1.2.3.4') ]) assert_equal(expected, r)
def test_parse_tagged_dim(): assert_equal(tagged_dim(['tag1', 'dim']), TaggedDim(dim=Dim('dim'), tags=[Tag('tag1')])) assert_equal(tagged_dim('dim'), TaggedDim(dim=Dim('dim'))) assert_equal(tagged_dim(':dim'), TaggedDim(dim=Dim('dim'))) assert_equal(tagged_dim('tag1:'), TaggedDim(tags=[Tag('tag1')])) assert_equal(tagged_dim('tag1:dim'), TaggedDim(dim=Dim('dim'), tags=[Tag('tag1')])) assert_equal(tagged_dim('tag1:tag2:dim'), TaggedDim(dim=Dim('dim'), tags=[Tag('tag1'), Tag('tag2')]))
def test_tagged_dim_to_dict(): t = tagged_dim("tag1:dim") assert_equal({'tags': ['tag1'], 'dim': 'dim'}, t.to_dict())
def test_or_repr(): c = Or([Equals(tagged_dim('src:ip'), 2)]) assert_equal( c , eval(repr(c)))
def test_tagged_dim_badarg(): tagged_dim(1)
def test_tagged_dim_repr(): t = tagged_dim("tag1:dim") assert_equal(t, eval(repr(t)))
def test_fields_matching(): assert_equal(tm.fields_matching(Field('clientip')), [Field('clientip')]) assert_equal(tm.fields_matching('@clientip'), [Field('clientip')]) assert_equal(tm.fields_matching(tagged_dim(':ip')), [Field('clientip')]) assert_equal(tm.fields_matching(tagged_dim(':mac')), [])
def test_ds_rewrite_tagged_dim_nogbc(): c = Equals(tagged_dim(':ip'), '1.2.3.4') r = ds._rewrite_tagged_dim(c) assert_equal(c, r)
def test_ds_rewrite_tagged_dim_no_fields(): c = gbceq(tagged_dim(':mac'), '1:2:3:4:5:6') # No fields have dimension=mac ds._rewrite_tagged_dim(c)
def test_bc_repr(): c = BinaryCondition(tagged_dim('t:d'), 2) assert_equal( c , eval(repr(c)))
def test_parse_field(): print(tagged_dim('@Field'))
def test_gteq_repr(): c = GreaterThanEqualTo(tagged_dim('t:d'), 2) assert_equal( c , eval(repr(c)))
def test_matches_repr(): c = MatchesCond(tagged_dim('t:d'), 2) assert_equal( c , eval(repr(c)))
def test_equals_repr(): c = Equals(tagged_dim('t:d'), 2) assert_equal( c , eval(repr(c)))
def test_gbc_repr(): c = GenericBinaryCondition(tagged_dim('t:d'), '==', 2) assert_equal( c , eval(repr(c)))
def test_tm_tdselect(): assert_true(tm._tagged_dim_subset(tagged_dim(':'), tagged_dim('src:ip'))) assert_true(tm._tagged_dim_subset(tagged_dim(':ip'), tagged_dim('src:ip'))) assert_true( not tm._tagged_dim_subset(tagged_dim(':mac'), tagged_dim('src:ip'))) assert_true(tm._tagged_dim_subset(tagged_dim('src:'), tagged_dim('src:ip'))) assert_true( not tm._tagged_dim_subset(tagged_dim('src:mac'), tagged_dim('src:ip'))) assert_true(not tm._tagged_dim_subset(tagged_dim('src:nat:ip'), tagged_dim('src:ip'))) assert_true(tm._tagged_dim_subset(tagged_dim('src:'), tagged_dim('src:'))) assert_true( tm._tagged_dim_subset(tagged_dim('src:'), tagged_dim('src:nat:')))
from scape.registry.tagged_dim import tagged_dim from scape.registry.condition import ( Equals, MatchesCond, TrueCondition, GreaterThan, GreaterThanEqualTo, And, Or, ) from scape.registry.table_metadata import TableMetadata from scape.registry.data_source import DataSource weblog_metadata = TableMetadata({ 'clientip' : tagged_dim('client:ip'), 'serverip' : tagged_dim('server:ip'), 'url' : tagged_dim('http:url'), 'status_code' : tagged_dim('http:status_code'), 'time': tagged_dim('sec') }) weblog_data = [ { 'clientip' : '1.2.3.4', 'serverip' : '4.4.4.4', 'url' : 'http://foo.bar.com/index.html', 'status_code' : '404', 'time' : '03-31-2011 08:11:22' }, { 'clientip' : '7.8.9.2', 'serverip' : '4.4.4.4', 'url' : 'http://foo.bar.com/status.html', 'status_code' : '200', 'time' : '03-31-2011 08:14:33' }, { 'clientip' : '1.2.3.4',