Portable C++11 network measurement library
C++ C Shell M4 CMake Makefile
Latest commit 8722a8d Feb 14, 2017 @bassosimone bassosimone committed on GitHub Merge pull request #1145 from measurement-kit/fix/bashisms
Remove bashism
Permalink
Failed to load latest commit information.
build Remove bashism Feb 14, 2017
doc Merge branch 'stable' into merge-stable Feb 14, 2017
example Start updating documentation for release 0.4.0 (#1082) Jan 16, 2017
include/measurement_kit Merge branch 'stable' into merge-stable Feb 14, 2017
m4 Use autotools step 1 May 28, 2014
src Merge branch 'stable' into merge-stable Feb 14, 2017
test Merge branch 'stable' into merge-stable Feb 14, 2017
.clang-format Tweaks developed while working on s/n/connection (#487) Apr 16, 2016
.gitignore Merge branch 'stable' into merge-stable Jan 25, 2017
.gitlab-ci.yml More cleanups of the CI subsystem (#1075) Jan 14, 2017
.travis.yml Last touch: disable building this branch Feb 9, 2017
AUTHORS Add Leonid to authors Dec 7, 2016
BUGS Big rename from libight to measurement_kit Jul 29, 2015
CMakeLists.txt Improve the CMakeLists.txt file (#983) Dec 7, 2016
CONTRIBUTING.md Flesh out basic contribution guide (#819) Sep 20, 2016
ChangeLog.md Merge branch 'stable' into merge-stable Feb 14, 2017
LICENSE Teach configure to search for the default ca-bundle (#590) May 14, 2016
Makefile.am Repair circle-ci build for stable (#1123) Feb 9, 2017
README.md Tweak README.md and ChangeLog.md Feb 2, 2017
TODO.md Update documentation for v0.2.0 (#663) Jun 29, 2016
Vagrantfile Start updating documentation for release 0.4.0 (#1082) Jan 16, 2017
acinclude.m4 Merge branch 'stable' into merge-stable Dec 4, 2016
autogen.sh Move cmdline in src/measurement_kit (#930) Nov 17, 2016
circle.yml More cleanups of the CI subsystem (#1075) Jan 14, 2017
configure.ac We're now hacking on v0.5.0-dev Dec 7, 2016
measurement_kit.podspec We're now hacking on v0.5.0-dev Dec 7, 2016
mkdocs.yml Use mkdocs and simplify doc tree structure Dec 7, 2015

README.md

MeasurementKit

branch travis-ci coveralls gitlab-ci circle-ci
master Travis Build Status Coverage Status GitLab Build Status CircleCI
stable Travis Build Status Coverage Status GitLab Build Status CircleCI

MeasurementKit is a library that implements open network measurement methodologies (performance, censorship, etc.) and targets mobile platforms (Android and iOS).

It is meant to be embedded by third party applications with specific network measurement needs and/or to be used by researchers as a basis to implement novel tools.

Currently it implements the following high-level tests:

It contains building-block functionalities useful to implement your own tests. More in detail it currently implements:

  • TCP connection (with which you can create a TCP connection towards and endpoint, receive and send data)

  • DNS client (with which you can resolve and reverse-resolve A and AAAA records using arbitrary name servers)

  • HTTP client (with which you can send HTTP/1.1 requests and receive and parse the corresponding responses)

  • traceroute for Android (with which you can send individual traceroute probes with a specified payload and TTL)

  • mlab-ns client (with which you can interact with Measurement Lab backend to know the server with which to run tests)

  • the functionality to communicate with the OONI collector

In the short term we plan to add to MeasurementKit:

Other functionalities that we would like to add are building-blocks functionalities such as uTP, and traceroute for iOS.

The following index illustrates the content of the remainder of this file:

How to clone the repository

To clone MeasurementKit repository, do:

git clone https://github.com/measurement-kit/measurement-kit

How to test a specific branch

If you need to checkout a specific branch (say feature/foo) for testing it, clone the repository and then type:

git fetch origin
git checkout feature/foo

Then proceed with the instruction to build and test MeasurementKit.

For more detailed instructions see contributing instructions.

How to build MeasurementKit

How to build MeasurementKit on a Unix-like system

Very briefly, to build from the git repository do:

./autogen.sh
./configure
make

See the Unix tutorial for more details.

How to test MeasurementKit on a Unix-like system

Once you have built MeasurementKit, run tests like:

make check

How to build MeasurementKit on Android

To compile MeasurementKit for Android, see the README.md file contained in the build/android directory of this repository.

How to build MeasurementKit on iOS

Having Xcode command line tools installed, run:

./build/ios/library

See the iOS tutorial for more info.

How to add MeasurementKit to an Xcode project.

Make sure your Podfile looks like this:

target 'YourTargetNameHere' do
    pod 'measurement_kit',
      :git => 'https://github.com/measurement-kit/measurement-kit.git',
      :branch => 'stable'
end

Run pod install (or pod update) and remember to open the .xcworkspace rather than the .xcodeproj. See the iOS tutorial for more info.

How to use MeasurementKit

You probably want to start using the nettests API that is the high level API for running tests. To this end, see also the nettests API examples and the Unix tutorial.