def test_parse_filter_statement(self): """Accept valid filter statements.""" self.assertEqual( self.parser.parse_filter_statement( self._tokenize('read: arg0 == 0')), parser.ParsedFilterStatement((parser.Syscall('read', 0), ), [ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ])) self.assertEqual( self.parser.parse_filter_statement( self._tokenize('{read, write}: arg0 == 0')), parser.ParsedFilterStatement(( parser.Syscall('read', 0), parser.Syscall('write', 1), ), [ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ])) self.assertEqual( self.parser.parse_filter_statement( self._tokenize('io@libc: arg0 == 0')), parser.ParsedFilterStatement(( parser.Syscall('read', 0), parser.Syscall('write', 1), ), [ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ])) self.assertEqual( self.parser.parse_filter_statement( self._tokenize('file-io@systemd: arg0 == 0')), parser.ParsedFilterStatement(( parser.Syscall('read', 0), parser.Syscall('write', 1), ), [ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ]))
def test_parse_metadata(self): """Accept valid filter statements with metadata.""" self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize('read[arch=test]: arg0 == 0')), parser.ParsedFilterStatement( syscalls=( parser.Syscall('read', 0), ), filters=[ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None)) self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize( '{read, nonexistent[arch=nonexistent]}: arg0 == 0')), parser.ParsedFilterStatement( syscalls=( parser.Syscall('read', 0), ), filters=[ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None))
def test_parse_filter_statement(self): """Accept valid filter statements.""" self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize('read: arg0 == 0')), parser.ParsedFilterStatement( syscalls=(parser.Syscall('read', 0), ), filters=[ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None)) self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize('{read, write}: arg0 == 0')), parser.ParsedFilterStatement(syscalls=( parser.Syscall('read', 0), parser.Syscall('write', 1), ), filters=[ parser.Filter( [[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None)) self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize('io@libc: arg0 == 0')), parser.ParsedFilterStatement(syscalls=( parser.Syscall('read', 0), parser.Syscall('write', 1), ), filters=[ parser.Filter( [[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None)) self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize('file-io@systemd: arg0 == 0')), parser.ParsedFilterStatement(syscalls=( parser.Syscall('read', 0), parser.Syscall('write', 1), ), filters=[ parser.Filter( [[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None)) self.assertEqualIgnoringToken( self.parser.parse_filter_statement( self._tokenize('kill: arg0 == 0')), parser.ParsedFilterStatement( syscalls=(parser.Syscall('kill', 62), ), filters=[ parser.Filter([[parser.Atom(0, '==', 0)]], bpf.Allow()), ], token=None))