Opened 7 years ago

Closed 14 months ago

#7384 closed task (wontfix)

Implement bisection method in keyword filtering test

Reported by: hellais Owned by: hellais
Priority: Medium Milestone:
Component: Archived/Ooni Version:
Severity: Normal Keywords: ooni_tests, wishlist, archived-closed-2018-07-04
Cc: aagbsn, isis, ioerror, hellais Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

Currently the keyword filtering test takes as input a set of keywords and sends them as payload of a HTTP request.

This requires us to have scapy running in a separate thread doing the sniffing and have it trigger an event when it receives a RST packet, based on this action we shall then run the test with a different set of keywords.

Child Tickets

Change History (7)

comment:1 Changed 7 years ago by hellais

Keywords: ooni_tests added

comment:2 Changed 7 years ago by hellais

Keywords: SponsorH201210 added

Adding this to the third milestone

comment:3 Changed 6 years ago by hellais

Cc: aagbsn isis ioerror hellais added

comment:4 Changed 6 years ago by hellais

Keywords: SponsorH201212 added; SponsorH201210 removed

comment:5 Changed 6 years ago by hellais

Keywords: wishlist added; SponsorH201212 removed

comment:6 Changed 3 years ago by elation

Severity: Normal

This comment refers only to the keyword list bisection aspect of this issue.

I have mocked up a few nearly working version of this and have been playing with placing the bisection logic into the inputProcessor. I did this to separate the keyword testing components from the keyword bisection components. The mocked up code is considerable cleaner.

In order to make it functional the individual tests need to be able to pass data to the main test_case.inputs generator that seeds each measurement.

https://github.com/TheTorProject/ooni-probe/blob/master/ooni/nettest.py#L528-L538

I see this being done in one of two ways.

  • The first is to leverage an outside data-store that the inputProcessor is pulling from, and the test is populating with results. This adds the addition of new services into the stack for a single test, which I don't see as a useful addition.
  • The second option is to use the send() function to push values into the generator. This would be a clean way to provide feedback to the test_case.inputs generator that it could use to bisect the blocked input and provide them on a later iteration. I currently cannot use this method because the test instance passed to each measurement is a new test_case object, and therefore does not have access to the test_case.inputs object that is generating inputs.

I would be happy to take a pass at passing reference to the test_case.inputs object to the test to get a working prototype working if that is the right path to head down. I wanted to ask in here to see if there might be a more appropriate way. I don't want to head down this path if there are reasons why this would never be merged into the core codebase.

Here is my current bisection functionality mock-up for the interested:
https://github.com/elationfoundation/ooni-probe/blob/feature/bisect_inputs/ooni/nettests/experimental/bisect_send.py

comment:7 Changed 14 months ago by teor

Keywords: archived-closed-2018-07-04 added
Resolution: wontfix
Status: newclosed

Close all tickets in archived components

Note: See TracTickets for help on using tickets.