How to use stopBrowsersMiddleware method of toxiproxy Package

Best Toxiproxy code snippet using toxiproxy.stopBrowsersMiddleware

api.go

Source:api.go Github

copy

Full Screen

1package toxiproxy2import (3 "encoding/json"4 "fmt"5 "log"6 "net"7 "net/http"8 "os"9 "strings"10 "github.com/Shopify/toxiproxy/toxics"11 "github.com/gorilla/mux"12 "github.com/sirupsen/logrus"13)14type ApiServer struct {15 Collection *ProxyCollection16}17func NewServer() *ApiServer {18 return &ApiServer{19 Collection: NewProxyCollection(),20 }21}22func (server *ApiServer) PopulateConfig(filename string) {23 file, err := os.Open(filename)24 if err != nil {25 logrus.WithFields(logrus.Fields{26 "config": filename,27 "error": err,28 }).Error("Error reading config file")29 } else {30 proxies, err := server.Collection.PopulateJson(file)31 if err != nil {32 logrus.WithFields(logrus.Fields{33 "config": filename,34 "error": err,35 }).Error("Failed to populate proxies from file")36 } else {37 logrus.WithFields(logrus.Fields{38 "config": filename,39 "proxies": len(proxies),40 }).Info("Populated proxies from file")41 }42 }43}44func StopBrowsersMiddleware(h http.Handler) http.Handler {45 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {46 if strings.HasPrefix(r.UserAgent(), "Mozilla/") {47 http.Error(w, "User agent not allowed", 403)48 } else {49 h.ServeHTTP(w, r)50 }51 })52}53func (server *ApiServer) Listen(host string, port string) {54 r := mux.NewRouter()55 r.HandleFunc("/reset", server.ResetState).Methods("POST")56 r.HandleFunc("/proxies", server.ProxyIndex).Methods("GET")57 r.HandleFunc("/proxies", server.ProxyCreate).Methods("POST")58 r.HandleFunc("/populate", server.Populate).Methods("POST")59 r.HandleFunc("/proxies/{proxy}", server.ProxyShow).Methods("GET")60 r.HandleFunc("/proxies/{proxy}", server.ProxyUpdate).Methods("POST")61 r.HandleFunc("/proxies/{proxy}", server.ProxyDelete).Methods("DELETE")62 r.HandleFunc("/proxies/{proxy}/toxics", server.ToxicIndex).Methods("GET")63 r.HandleFunc("/proxies/{proxy}/toxics", server.ToxicCreate).Methods("POST")64 r.HandleFunc("/proxies/{proxy}/toxics/{toxic}", server.ToxicShow).Methods("GET")65 r.HandleFunc("/proxies/{proxy}/toxics/{toxic}", server.ToxicUpdate).Methods("POST")66 r.HandleFunc("/proxies/{proxy}/toxics/{toxic}", server.ToxicDelete).Methods("DELETE")67 r.HandleFunc("/version", server.Version).Methods("GET")68 http.Handle("/", StopBrowsersMiddleware(r))69 logrus.WithFields(logrus.Fields{70 "host": host,71 "port": port,72 "version": Version,73 }).Info("API HTTP server starting")74 err := http.ListenAndServe(net.JoinHostPort(host, port), nil)75 if err != nil {76 log.Fatal("ListenAndServe: ", err)77 }78}79func (server *ApiServer) ProxyIndex(response http.ResponseWriter, request *http.Request) {80 proxies := server.Collection.Proxies()81 marshalData := make(map[string]interface{}, len(proxies))82 for name, proxy := range proxies {83 marshalData[name] = proxyWithToxics(proxy)84 }85 data, err := json.Marshal(marshalData)86 if apiError(response, err) {87 return88 }89 response.Header().Set("Content-Type", "application/json")90 _, err = response.Write(data)91 if err != nil {92 logrus.Warn("ProxyIndex: Failed to write response to client", err)93 }94}95func (server *ApiServer) ResetState(response http.ResponseWriter, request *http.Request) {96 proxies := server.Collection.Proxies()97 for _, proxy := range proxies {98 err := proxy.Start()99 if err != ErrProxyAlreadyStarted && apiError(response, err) {100 return101 }102 proxy.Toxics.ResetToxics()103 }104 response.WriteHeader(http.StatusNoContent)105 _, err := response.Write(nil)106 if err != nil {107 logrus.Warn("ResetState: Failed to write headers to client", err)108 }109}110func (server *ApiServer) ProxyCreate(response http.ResponseWriter, request *http.Request) {111 // Default fields to enable the proxy right away112 input := Proxy{Enabled: true}113 err := json.NewDecoder(request.Body).Decode(&input)114 if apiError(response, joinError(err, ErrBadRequestBody)) {115 return116 }117 if len(input.Name) < 1 {118 apiError(response, joinError(fmt.Errorf("name"), ErrMissingField))119 return120 }121 if len(input.Upstream) < 1 {122 apiError(response, joinError(fmt.Errorf("upstream"), ErrMissingField))123 return124 }125 proxy := NewProxy()126 proxy.Name = input.Name127 proxy.Listen = input.Listen128 proxy.Upstream = input.Upstream129 err = server.Collection.Add(proxy, input.Enabled)130 if apiError(response, err) {131 return132 }133 data, err := json.Marshal(proxyWithToxics(proxy))134 if apiError(response, err) {135 return136 }137 response.Header().Set("Content-Type", "application/json")138 response.WriteHeader(http.StatusCreated)139 _, err = response.Write(data)140 if err != nil {141 logrus.Warn("ProxyCreate: Failed to write response to client", err)142 }143}144func (server *ApiServer) Populate(response http.ResponseWriter, request *http.Request) {145 proxies, err := server.Collection.PopulateJson(request.Body)146 apiErr, ok := err.(*ApiError)147 if !ok && err != nil {148 logrus.Warn("Error did not include status code: ", err)149 apiErr = &ApiError{err.Error(), http.StatusInternalServerError}150 }151 data, err := json.Marshal(struct {152 *ApiError `json:",omitempty"`153 Proxies []proxyToxics `json:"proxies"`154 }{apiErr, proxiesWithToxics(proxies)})155 if apiError(response, err) {156 return157 }158 responseCode := http.StatusCreated159 if apiErr != nil {160 responseCode = apiErr.StatusCode161 }162 response.Header().Set("Content-Type", "application/json")163 response.WriteHeader(responseCode)164 _, err = response.Write(data)165 if err != nil {166 logrus.Warn("Populate: Failed to write response to client", err)167 }168}169func (server *ApiServer) ProxyShow(response http.ResponseWriter, request *http.Request) {170 vars := mux.Vars(request)171 proxy, err := server.Collection.Get(vars["proxy"])172 if apiError(response, err) {173 return174 }175 data, err := json.Marshal(proxyWithToxics(proxy))176 if apiError(response, err) {177 return178 }179 response.Header().Set("Content-Type", "application/json")180 _, err = response.Write(data)181 if err != nil {182 logrus.Warn("ProxyShow: Failed to write response to client", err)183 }184}185func (server *ApiServer) ProxyUpdate(response http.ResponseWriter, request *http.Request) {186 vars := mux.Vars(request)187 proxy, err := server.Collection.Get(vars["proxy"])188 if apiError(response, err) {189 return190 }191 // Default fields are the same as existing proxy192 input := Proxy{Listen: proxy.Listen, Upstream: proxy.Upstream, Enabled: proxy.Enabled}193 err = json.NewDecoder(request.Body).Decode(&input)194 if apiError(response, joinError(err, ErrBadRequestBody)) {195 return196 }197 err = proxy.Update(&input)198 if apiError(response, err) {199 return200 }201 data, err := json.Marshal(proxyWithToxics(proxy))202 if apiError(response, err) {203 return204 }205 response.Header().Set("Content-Type", "application/json")206 _, err = response.Write(data)207 if err != nil {208 logrus.Warn("ProxyUpdate: Failed to write response to client", err)209 }210}211func (server *ApiServer) ProxyDelete(response http.ResponseWriter, request *http.Request) {212 vars := mux.Vars(request)213 err := server.Collection.Remove(vars["proxy"])214 if apiError(response, err) {215 return216 }217 response.WriteHeader(http.StatusNoContent)218 _, err = response.Write(nil)219 if err != nil {220 logrus.Warn("ProxyDelete: Failed to write headers to client", err)221 }222}223func (server *ApiServer) ToxicIndex(response http.ResponseWriter, request *http.Request) {224 vars := mux.Vars(request)225 proxy, err := server.Collection.Get(vars["proxy"])226 if apiError(response, err) {227 return228 }229 toxics := proxy.Toxics.GetToxicArray()230 data, err := json.Marshal(toxics)231 if apiError(response, err) {232 return233 }234 response.Header().Set("Content-Type", "application/json")235 _, err = response.Write(data)236 if err != nil {237 logrus.Warn("ToxicIndex: Failed to write response to client", err)238 }239}240func (server *ApiServer) ToxicCreate(response http.ResponseWriter, request *http.Request) {241 vars := mux.Vars(request)242 proxy, err := server.Collection.Get(vars["proxy"])243 if apiError(response, err) {244 return245 }246 toxic, err := proxy.Toxics.AddToxicJson(request.Body)247 if apiError(response, err) {248 return249 }250 data, err := json.Marshal(toxic)251 if apiError(response, err) {252 return253 }254 response.Header().Set("Content-Type", "application/json")255 _, err = response.Write(data)256 if err != nil {257 logrus.Warn("ToxicCreate: Failed to write response to client", err)258 }259}260func (server *ApiServer) ToxicShow(response http.ResponseWriter, request *http.Request) {261 vars := mux.Vars(request)262 proxy, err := server.Collection.Get(vars["proxy"])263 if apiError(response, err) {264 return265 }266 toxic := proxy.Toxics.GetToxic(vars["toxic"])267 if toxic == nil {268 apiError(response, ErrToxicNotFound)269 return270 }271 data, err := json.Marshal(toxic)272 if apiError(response, err) {273 return274 }275 response.Header().Set("Content-Type", "application/json")276 _, err = response.Write(data)277 if err != nil {278 logrus.Warn("ToxicShow: Failed to write response to client", err)279 }280}281func (server *ApiServer) ToxicUpdate(response http.ResponseWriter, request *http.Request) {282 vars := mux.Vars(request)283 proxy, err := server.Collection.Get(vars["proxy"])284 if apiError(response, err) {285 return286 }287 toxic, err := proxy.Toxics.UpdateToxicJson(vars["toxic"], request.Body)288 if apiError(response, err) {289 return290 }291 data, err := json.Marshal(toxic)292 if apiError(response, err) {293 return294 }295 response.Header().Set("Content-Type", "application/json")296 _, err = response.Write(data)297 if err != nil {298 logrus.Warn("ToxicUpdate: Failed to write response to client", err)299 }300}301func (server *ApiServer) ToxicDelete(response http.ResponseWriter, request *http.Request) {302 vars := mux.Vars(request)303 proxy, err := server.Collection.Get(vars["proxy"])304 if apiError(response, err) {305 return306 }307 err = proxy.Toxics.RemoveToxic(vars["toxic"])308 if apiError(response, err) {309 return310 }311 response.WriteHeader(http.StatusNoContent)312 _, err = response.Write(nil)313 if err != nil {314 logrus.Warn("ToxicDelete: Failed to write headers to client", err)315 }316}317func (server *ApiServer) Version(response http.ResponseWriter, request *http.Request) {318 response.Header().Set("Content-Type", "text/plain;charset=utf-8")319 _, err := response.Write([]byte(Version))320 if err != nil {321 logrus.Warn("Version: Failed to write response to client", err)322 }323}324type ApiError struct {325 Message string `json:"error"`326 StatusCode int `json:"status"`327}328func (e *ApiError) Error() string {329 return e.Message330}331func newError(msg string, status int) *ApiError {332 return &ApiError{msg, status}333}334func joinError(err error, wrapper *ApiError) *ApiError {335 if err != nil {336 return &ApiError{wrapper.Message + ": " + err.Error(), wrapper.StatusCode}337 }338 return nil339}340var (341 ErrBadRequestBody = newError("bad request body", http.StatusBadRequest)342 ErrMissingField = newError("missing required field", http.StatusBadRequest)343 ErrProxyNotFound = newError("proxy not found", http.StatusNotFound)344 ErrProxyAlreadyExists = newError("proxy already exists", http.StatusConflict)345 ErrInvalidStream = newError("stream was invalid, can be either upstream or downstream", http.StatusBadRequest)346 ErrInvalidToxicType = newError("invalid toxic type", http.StatusBadRequest)347 ErrToxicAlreadyExists = newError("toxic already exists", http.StatusConflict)348 ErrToxicNotFound = newError("toxic not found", http.StatusNotFound)349)350func apiError(resp http.ResponseWriter, err error) bool {351 obj, ok := err.(*ApiError)352 if !ok && err != nil {353 logrus.Warn("Error did not include status code: ", err)354 obj = &ApiError{err.Error(), http.StatusInternalServerError}355 }356 if obj == nil {357 return false358 }359 data, err2 := json.Marshal(obj)360 if err2 != nil {361 logrus.Warn("Error json encoding error (╯°□°)╯︵ ┻━┻ ", err2)362 }363 resp.Header().Set("Content-Type", "application/json")364 http.Error(resp, string(data), obj.StatusCode)365 return true366}367type proxyToxics struct {368 *Proxy369 Toxics []toxics.Toxic `json:"toxics"`370}371func proxyWithToxics(proxy *Proxy) (result proxyToxics) {372 result.Proxy = proxy373 result.Toxics = proxy.Toxics.GetToxicArray()374 return375}376func proxiesWithToxics(proxies []*Proxy) (result []proxyToxics) {377 for _, proxy := range proxies {378 result = append(result, proxyWithToxics(proxy))379 }380 return381}...

Full Screen

Full Screen

stopBrowsersMiddleware

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 proxy, err := client.NewProxy()4 if err != nil {5 panic(err)6 }7 if err := proxy.Create(); err != nil {8 panic(err)9 }10 if err := proxy.Start(); err != nil {11 panic(err)12 }

Full Screen

Full Screen

stopBrowsersMiddleware

Using AI Code Generation

copy

Full Screen

1 toxiproxy.stopBrowsersMiddleware()2 toxiproxy.startBrowsersMiddleware()3 toxiproxy.stopBrowsersMiddleware()4 toxiproxy.startBrowsersMiddleware()5 toxiproxy.stopBrowsersMiddleware()6 toxiproxy.startBrowsersMiddleware()7 toxiproxy.stopBrowsersMiddleware()8 toxiproxy.startBrowsersMiddleware()9 toxiproxy.stopBrowsersMiddleware()10 toxiproxy.startBrowsersMiddleware()11 toxiproxy.stopBrowsersMiddleware()12 toxiproxy.startBrowsersMiddleware()13 toxiproxy.stopBrowsersMiddleware()14 toxiproxy.startBrowsersMiddleware()15 toxiproxy.stopBrowsersMiddleware()16 toxiproxy.startBrowsersMiddleware()17 toxiproxy.stopBrowsersMiddleware()18 toxiproxy.startBrowsersMiddleware()

Full Screen

Full Screen

stopBrowsersMiddleware

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 proxyClient := client.NewClient("localhost:8474")4 err := proxyClient.StopAllProxies()5 if err != nil {6 fmt.Println("Error stopping all proxies")7 }8 err = proxyClient.StopBrowsers()9 if err != nil {10 fmt.Println("Error stopping all browsers")11 }12}13import (14func main() {15 proxyClient := client.NewClient("localhost:8474")16 err := proxyClient.StopAllProxies()17 if err != nil {18 fmt.Println("Error stopping all proxies")19 }20}21import (22func main() {23 proxyClient := client.NewClient("localhost:8474")24 err := proxyClient.StopProxy("test-proxy")25 if err != nil {26 fmt.Println("Error stopping proxy")27 }28}29import (30func main() {31 proxyClient := client.NewClient("localhost:8474")32 proxy, err := proxyClient.CreateProxy("test-proxy", "localhost:9999", "localhost:9998")33 if err != nil {34 fmt.Println("Error creating proxy")35 }36 fmt.Println(proxy.Name)37}38import (39func main() {40 proxyClient := client.NewClient("

Full Screen

Full Screen

stopBrowsersMiddleware

Using AI Code Generation

copy

Full Screen

1import (2func stopBrowsers() {3 cmd := exec.Command("taskkill", "/F", "/IM", "chrome.exe")4 err := cmd.Run()5 if err != nil {6 log.Fatal(err)7 }8 cmd = exec.Command("taskkill", "/F", "/IM", "firefox.exe")9 err = cmd.Run()10 if err != nil {11 log.Fatal(err)12 }13 cmd = exec.Command("taskkill", "/F", "/IM", "opera.exe")14 err = cmd.Run()15 if err != nil {16 log.Fatal(err)17 }18 cmd = exec.Command("taskkill", "/F", "/IM", "iexplore.exe")19 err = cmd.Run()20 if err != nil {21 log.Fatal(err)22 }23 cmd = exec.Command("taskkill", "/F", "/IM", "MicrosoftEdge.exe")24 err = cmd.Run()25 if err != nil {26 log.Fatal(err)27 }28 cmd = exec.Command("taskkill", "/F", "/IM", "safari.exe")29 err = cmd.Run()30 if err != nil {31 log.Fatal(err)32 }33 cmd = exec.Command("taskkill", "/F", "/IM", "vivaldi.exe")34 err = cmd.Run()35 if err != nil {36 log.Fatal(err

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful