shadow

A HTTP debugging proxy that helps you with your continuous deployments

  • Owner: twilio/shadow
  • Platform:
  • License:: MIT License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

#Shadow Proxy

##Introduction

Shadow is a HTTP debugging proxy that sits in front of an existing service and a service with new code changes. It copies and directs incoming requests to both downstream services and compares the responses from those services.

Shadowing deployments allows users to assert expected behaviors on the new codebase and detect unexpected behavioral changes before pushing new code into production.

Shadow comes with a UI that allows users to monitor the stream of requests live.

Requirements

  1. Java 1.6+
  2. SBT 0.12.1+

Building

  1. Clone the repository: git clone https://github.com/twilio/shadow.git
  2. Build the JAR: sbt assembly

This generates an assembled Jar with all dependencies in /target/shadow-assembly-<VERSION>.jar

Installing

No escalated privledges needed unless you are using privileged ports. Just copy the Jar built in the previous step on to your existing server.

Configuring

Make a copy of the example configuration application.conf.example and change the settings to fit your environment.

Shadow specific configuration

akka {
  loglevel = INFO
}

shadow {
    version = "0.1-SNAPSHOT"

    proxy-host = localhost
    proxy-port = 8000

    ui-host = localhost
    ui-port = 8081

    results-log = "logs/results.log"

    trueServer {

        host = "httpbin.org"
        port = 80

        query-param-overrides {
        }

        form-param-overrides {
        }

    }

    shadowServer {

        host = "httpbin.org"
        port = 80

        query-param-overrides {
            test = ["hello"]
        }

        form-param-overrides {
            test2 = ["world"]
        }

    }
}

spray.can.server {
  server-header = shadow-server/${shadow.version}
  request-timeout = 15s
  stats-support = true
}

spray.can.client {
    user-agent-header = shadow/${shadow.version}
}

Running

Running java -jar -Dconfig.file=application.conf shadow-assembly-<VERSION>.jar will start the server in the foreground.

We recommend using a supervisor such as jsvc or runit to manage running shadow

Be default, the UI can be accessed at http://localhost:8081

Testing

Tests are found under src/main/test/scala/

To run them, use: sbt test

Build Status

Build Status

Based upon

Main metrics

Overview
Name With Ownertwilio/shadow
Primary LanguageJavaScript
Program languageScala (Language Count: 2)
Platform
License:MIT License
所有者活动
Created At2012-10-17 03:49:02
Pushed At2023-04-10 02:12:52
Last Commit At2013-04-28 12:07:52
Release Count0
用户参与
Stargazers Count330
Watchers Count24
Fork Count30
Commits Count50
Has Issues Enabled
Issues Count5
Issue Open Count3
Pull Requests Count1
Pull Requests Open Count4
Pull Requests Close Count1
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private