Support iterating from a 0-filled table key
authorBrenden Blanco <bblanco@plumgrid.com>
Tue, 6 Oct 2015 19:05:25 +0000 (12:05 -0700)
committerBrenden Blanco <bblanco@plumgrid.com>
Tue, 6 Oct 2015 19:56:01 +0000 (12:56 -0700)
commit14915e056b75cdbd6063133bd1ba6cf034d6876f
treed3bc70158bc3f73c1de6b44f53613088a7cb0ca6
parentd45a6ee83b1123cc047ac354612dbc580340c2d9
Support iterating from a 0-filled table key

In the case that 0-filled keys are valid in the table, the previous
algorithm did not properly iterate.

The API of the bpf_get_next_key routine is such that the iteration
over a map should start with an invalid key. When a 0 key is valid, this
causes iteration to start anywhere inside the hash table, skipping some
entries. So, add logic to the Iter object to test if the init key is
invalid. If otherwise, try a few alternatives until an invalid key is
found. If none found, raise an exception.

Also adds a test for indexing arrays from 0, which nows works with this
too.

Fixes: #260
Signed-off-by: Brenden Blanco <bblanco@plumgrid.com>
src/python/bcc/__init__.py
tests/cc/CMakeLists.txt
tests/cc/test_array.py [new file with mode: 0755]
tests/cc/test_stat1.py