Coder Social home page Coder Social logo

pawmsf / measurement-kit Goto Github PK

View Code? Open in Web Editor NEW

This project forked from measurement-kit/measurement-kit

0.0 1.0 0.0 12.79 MB

Portable C++14 network measurement library

Home Page: https://measurement-kit.github.io/

License: Other

CMake 0.15% Makefile 0.06% M4 0.34% Shell 0.92% Python 0.04% C++ 95.29% C 3.17% Ruby 0.02%

measurement-kit's Introduction

MeasurementKit

Portable C++14 network measurement library

Android GitHub license Github Releases Github Issues


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

  • the functionality to communicate with the OONI bouncer

In the short term we plan to add to MeasurementKit:

  • more OONI tests

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

We have a specific repository for compiling MeasurementKit for Android. You may also want to read the documentation explaining how to cross compile MK dependencies for Android.

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.

measurement-kit's People

Contributors

bassosimone avatar hellais avatar antoniolangiu avatar davideallavena avatar helloimcarmine avatar joelanders avatar lorenzoprimi avatar readmecritic avatar darkk avatar anadahz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.