mirror of
https://github.com/gitpod-io/gitpod.git
synced 2025-12-08 17:36:30 +00:00
70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
// Copyright (c) 2022 Gitpod GmbH. All rights reserved.
|
|
// Licensed under the GNU Affero General Public License (AGPL).
|
|
// See License.AGPL.txt in the project root for license information.
|
|
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"time"
|
|
|
|
"github.com/gitpod-io/gitpod/common-go/log"
|
|
|
|
toxiproxy "github.com/Shopify/toxiproxy/v2/client"
|
|
)
|
|
|
|
var (
|
|
proxyName string
|
|
latency int
|
|
jitter int
|
|
wait bool
|
|
)
|
|
|
|
func main() {
|
|
flag.StringVar(&proxyName, "proxy", "mysql", "the name of the proxy to which latency should be added")
|
|
flag.IntVar(&latency, "latency", 1000, "latency in milliseconds")
|
|
flag.IntVar(&jitter, "jitter", 250, "jitter in milliseconds")
|
|
flag.BoolVar(&wait, "wait", false, "whether the process should wait indefinitely after running")
|
|
|
|
flag.Parse()
|
|
|
|
client := toxiproxy.NewClient(":8474")
|
|
|
|
var (
|
|
proxies map[string]*toxiproxy.Proxy
|
|
err error
|
|
)
|
|
for {
|
|
proxies, err = client.Proxies()
|
|
if err != nil {
|
|
log.WithError(err).Print("Failed to list proxies")
|
|
log.Println("Retrying in 1s...")
|
|
time.Sleep(1 * time.Second)
|
|
} else {
|
|
break
|
|
}
|
|
}
|
|
|
|
proxy, ok := proxies[proxyName]
|
|
if !ok {
|
|
log.Fatalf("Failed to find proxy %q", proxyName)
|
|
}
|
|
|
|
toxic, err := proxy.AddToxic(
|
|
"latency",
|
|
"latency",
|
|
"downstream",
|
|
1.0,
|
|
toxiproxy.Attributes{"latency": latency, "jitter": jitter},
|
|
)
|
|
if err != nil {
|
|
log.Fatalf("Failed to add toxic: %s", err)
|
|
}
|
|
|
|
log.Printf("Toxic added: %s", toxic.Name)
|
|
|
|
if wait {
|
|
select {}
|
|
}
|
|
}
|