Code Monkey home page Code Monkey logo

httping's Introduction

httping

httping - A tool to measure RTT on HTTP/S requests

This tool should be able to run on Windows, Linux and Mac OS/X, but it has only been tested in Windows 10.

Latest release

Requirements

Golang >1.3 :: http.Client Timeout wasn't available in previous versions
External library requirement: github.com/montanaflynn/stats

Installing

From source

go get github.com/pjperez/httping
go install github.com/pjperez/httping

You'll then find httping.exe in your $GOPATH/bin directory

Binary

Check the latest release and download the standalone binary from there, it doesn't need installation and it's portable.

Usage

Server mode (listener)

httping -listen port [OPTIONS]

It will start a listener on port and reply to any GET request as follows:

{
  "Hostname":"Server_Hostname",
  "ClientIP":"Client_IP",
  "Time":"Current_Timestamp"
}

Client mode (original httping)

httping -url requested_url [OPTIONS]

Options
-h
  Help

-url *https://github.com*
  Requested URL. If no protocol is specified with http:// or https:// the system will use http://

-count *10*
  Number of requests to send.
  Default: 10
  
-httpverb *GET*
  Verb to use for the HTTP request: GET or HEAD.
  Default: GET

-hostheader "github.com"
  Specify a custom Host: header

-json
  If specified, outputs the results in json format

Example

PS C:\temp> ./httping.exe -url https://wormhole.network -count 10

httping 0.9.1 - A tool to measure RTT on HTTP/S requests
Help: httping -h
HTTP GET to wormhole.network (https://wormhole.network):
connected to https://wormhole.network, seq=1, httpVerb=GET, httpStatus=200, bytes=10991, RTT=381.99 ms
connected to https://wormhole.network, seq=2, httpVerb=GET, httpStatus=200, bytes=10991, RTT=169.03 ms
connected to https://wormhole.network, seq=3, httpVerb=GET, httpStatus=200, bytes=10991, RTT=94.19 ms
connected to https://wormhole.network, seq=4, httpVerb=GET, httpStatus=200, bytes=10991, RTT=106.94 ms
connected to https://wormhole.network, seq=5, httpVerb=GET, httpStatus=200, bytes=10991, RTT=78.16 ms
connected to https://wormhole.network, seq=6, httpVerb=GET, httpStatus=200, bytes=10991, RTT=121.95 ms
connected to https://wormhole.network, seq=7, httpVerb=GET, httpStatus=200, bytes=10991, RTT=103.13 ms
connected to https://wormhole.network, seq=8, httpVerb=GET, httpStatus=200, bytes=10991, RTT=81.28 ms
connected to https://wormhole.network, seq=9, httpVerb=GET, httpStatus=200, bytes=10991, RTT=125.78 ms
connected to https://wormhole.network, seq=10, httpVerb=GET, httpStatus=200, bytes=10991, RTT=81.77 ms

Probes sent: 10
Successful responses: 10
% of requests failed: 0
Min response time: 78.1639ms
Average response time: 134.42187ms
Median response time: 105.035ms
Max response time: 381.9932ms

90% of requests were faster than: 275.51005ms
75% of requests were faster than: 125.7822ms
50% of requests were faster than: 105.035ms
25% of requests were faster than: 81.7667ms

Example 2:

PS C:\temp> .\httping.exe -url https://wormhole.network -count 5 -json
{"host":"wormhole.network","httpVerb":"GET","hostHeader":"wormhole.network","seq":1,"httpStatus":200,"bytes":10991,"rtt":415.5466}
{"host":"wormhole.network","httpVerb":"GET","hostHeader":"wormhole.network","seq":2,"httpStatus":200,"bytes":10991,"rtt":120.0931}
{"host":"wormhole.network","httpVerb":"GET","hostHeader":"wormhole.network","seq":3,"httpStatus":200,"bytes":10991,"rtt":75.6925}
{"host":"wormhole.network","httpVerb":"GET","hostHeader":"wormhole.network","seq":4,"httpStatus":200,"bytes":10991,"rtt":121.3327}
{"host":"wormhole.network","httpVerb":"GET","hostHeader":"wormhole.network","seq":5,"httpStatus":200,"bytes":10991,"rtt":71.4523}

Help

httping help

Warranty

This is just a learning exercise, hence it is distributed AS IS, with no warranty.

You should not use this software in production under any circumstances. It's not intended to and it has not been thoroughly tested and problably it's not very accurate.

Contributing

In order to contribute you can do any of the below:

  1. Open a new Issue
  2. Fork the project, add a feature or fix and send us a PR
  3. Go to the Projects section and comment on a card/issue from the TODO list.
  4. Open an issue
  5. Just get in touch if you have other ideas :)
  6. Do whatever you want actually! :)

httping's People

Contributors

pjperez avatar pedroperezmsft 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.