Opened 5 years ago

Closed 15 months ago

#12823 closed enhancement (wontfix)

Design and implement new deck format

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

Description

The current test deck format has some limitations.

These are namely:

1) There is no way of making an input be part of the test deck itself

2) The format is too verbose and contains redundant information (all of the ooniprobe command line options need to be explicitly specified)

For this reason I think we should have a new format that makes it possible to include inputs as part of the test deck. The test deck should therefore be a compressed container (tar and gzip seem to be good candidates as they are well supported in python).

It should then be possible to reference input files that are part of the test deck itself.

Child Tickets

Change History (5)

comment:1 Changed 5 years ago by kudrom

I think that the deck should be splitted between a section dedicated to the global options of ooniprobe and a section dedicated to the local options of each test.

I propose to call the first section header and the second one body.

The header is composed only with options of the cmd line of ooniprobe, and is meant to replace the cmd line for each test execution. This header will be overwritten by any cmd parameter/flag of the deck execution to allow a user to change the global options from console when launching the deck.

The body is composed of one element per test, which will have as children some overwritten elements of the global options and the local parameters of the test. Every children of the body must be the name of an installed test.

That way a deck could be:

  • - header:
    • -collector: localhost
    • -logfile: $HOME/.ooni/this_deck.log
  • - body:
    • manipulation/dnsspoof:
      • -h: torproject.org
      • -r: 4.2.2.2:53
      • -no-collector
    • manipulation/captiveportal:
      • -no-geoip

If there're no more suggestions i'd start writing it in a couple of days.
ciao

Last edited 5 years ago by kudrom (previous) (diff)

comment:2 Changed 5 years ago by hellais

Yes this sounds good to me. The only changes that I would make are to the body.

Nameley the fact that the body should be a list and not a dict. This is because you may want to run the same NetTest, but with different options.

I would hence propose a format that goes something like:

header: {collector: 'http://localhost', logfile: path/to/log.log}
body:
- nettest: manipulation/http_requests
  options:
  - {url: 'http://google.com'}
  - no-collector
- nettest: manipulation/http_manipulation
  options:
  - {backend: 'http://127.0.0.1:8080'}

I also think we should first write up a specification of the new deck format (adding it to the ooni-spec repository), submit it for review by writing an email to tor-dev, before we end up writing any code. This will save us having to redesign the deck another time.

comment:3 Changed 5 years ago by hellais

Status: newaccepted

The specification for this is available inside of ooni/spec here: https://gitweb.torproject.org/ooni/spec.git/blob/HEAD:/test-decks/td-spec.md.

We submitted the proposal to the ooni-dev and tor-dev mailinglists for review and did not get feedback so we have decided (during the last weekly meeting) to move onto the implementation phase.

comment:4 Changed 22 months ago by teor

Severity: Normal

Set all open tickets without a severity to "Normal"

comment:5 Changed 15 months ago by teor

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

Close all tickets in archived components

Note: See TracTickets for help on using tickets.