@@ -7,15 +7,14 @@ import (
77 "os"
88 "time"
99
10- "github.com/go-resty/resty/v2"
1110 "github.com/rs/zerolog"
1211 "github.com/smartcontractkit/chainlink-testing-framework/parrot"
1312)
1413
1514func ExampleServer_internal () {
1615 // Create a new parrot instance with no logging and a custom save file
1716 saveFile := "register_example.json"
18- p , err := parrot .Wake (parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
17+ p , err := parrot .NewServer (parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
1918 if err != nil {
2019 panic (err )
2120 }
@@ -77,17 +76,14 @@ func ExampleServer_external() {
7776 defer os .Remove (saveFile ) // Cleanup the save file for the example
7877
7978 go func () { // Run the parrot server as a separate instance, like in a Docker container
80- _ , err := parrot .Wake (parrot .WithPort (port ), parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
79+ _ , err := parrot .NewServer (parrot .WithPort (port ), parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
8180 if err != nil {
8281 panic (err )
8382 }
8483 }()
8584
86- // Code that calls the parrot server from another service
87- // Use resty to make HTTP calls to the parrot server
88- client := resty .New ()
89- client .SetBaseURL (fmt .Sprintf ("http://localhost:%d" , port )) // The URL of the parrot server
90-
85+ // Get a client to interact with the parrot server
86+ client := parrot .NewClient (fmt .Sprintf ("http://localhost:%d" , port ))
9187 waitForParrotServerExternal (client , time .Second ) // Wait for the parrot server to start
9288
9389 // Register a new route /test that will return a 200 status code with a text/plain response body of "Squawk"
@@ -97,51 +93,43 @@ func ExampleServer_external() {
9793 RawResponseBody : "Squawk" ,
9894 ResponseStatusCode : http .StatusOK ,
9995 }
100- resp , err := client .R (). SetBody ( route ). Post ( parrot . RoutesRoute )
96+ err := client .RegisterRoute ( route )
10197 if err != nil {
10298 panic (err )
10399 }
104- defer resp .RawResponse .Body .Close ()
105- fmt .Println (resp .StatusCode ())
100+ fmt .Println ("Registered route" )
106101
107102 // Get all routes from the parrot server
108- routes := make ([]* parrot.Route , 0 )
109- resp , err = client .R ().SetResult (& routes ).Get (parrot .RoutesRoute )
103+ routes , err := client .Routes ()
110104 if err != nil {
111105 panic (err )
112106 }
113- defer resp .RawResponse .Body .Close ()
114- fmt .Println (resp .StatusCode ())
115- fmt .Println (len (routes ))
107+ fmt .Printf ("Found %d routes\n " , len (routes ))
116108
117109 // Delete the route
118- resp , err = client .R (). SetBody ( route ). Delete ( parrot . RoutesRoute )
110+ err = client .DeleteRoute ( route )
119111 if err != nil {
120112 panic (err )
121113 }
122- defer resp .RawResponse .Body .Close ()
123- fmt .Println (resp .StatusCode ())
114+ fmt .Println ("Deleted route" )
124115
125116 // Get all routes from the parrot server
126- routes = make ([]* parrot.Route , 0 )
127- resp , err = client .R ().SetResult (& routes ).Get (parrot .RoutesRoute )
117+ routes , err = client .Routes ()
128118 if err != nil {
129119 panic (err )
130120 }
131- defer resp .RawResponse .Body .Close ()
132- fmt .Println (len (routes ))
121+ fmt .Printf ("Found %d routes\n " , len (routes ))
133122
134123 // Output:
135- // 201
136- // 200
137- // 1
138- // 204
139- // 0
124+ // Registered route
125+ // Found 1 routes
126+ // Deleted route
127+ // Found 0 routes
140128}
141129
142130func ExampleRecorder_internal () {
143131 saveFile := "recorder_example.json"
144- p , err := parrot .Wake (parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
132+ p , err := parrot .NewServer (parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
145133 if err != nil {
146134 panic (err )
147135 }
@@ -220,15 +208,13 @@ func ExampleRecorder_external() {
220208 defer os .Remove (saveFile ) // Cleanup the save file for the example
221209
222210 go func () { // Run the parrot server as a separate instance, like in a Docker container
223- _ , err := parrot .Wake (parrot .WithPort (port ), parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
211+ _ , err := parrot .NewServer (parrot .WithPort (port ), parrot .WithLogLevel (zerolog .NoLevel ), parrot .WithSaveFile (saveFile ))
224212 if err != nil {
225213 panic (err )
226214 }
227215 }()
228216
229- client := resty .New ()
230- client .SetBaseURL (fmt .Sprintf ("http://localhost:%d" , port )) // The URL of the parrot server
231-
217+ client := parrot .NewClient (fmt .Sprintf ("http://localhost:%d" , port ))
232218 waitForParrotServerExternal (client , time .Second ) // Wait for the parrot server to start
233219
234220 // Register a new route /test that will return a 200 status code with a text/plain response body of "Squawk"
@@ -240,33 +226,36 @@ func ExampleRecorder_external() {
240226 }
241227
242228 // Register the route with the parrot instance
243- resp , err := client .R (). SetBody ( route ). Post ( parrot . RoutesRoute )
229+ err := client .RegisterRoute ( route )
244230 if err != nil {
245231 panic (err )
246232 }
247233
248- // Use the host of the machine your recorder is running on
234+ // Use the recorderHost of the machine your recorder is running on
249235 // This should not be localhost if you are running the parrot server on a different machine
250236 // It should be the public IP address of the machine running your code, so that the parrot can call back to it
251- host := "localhost"
237+ recorderHost := "localhost"
252238
253239 // Create a new recorder with our host
254- recorder , err := parrot .NewRecorder (parrot .WithHost (host ))
240+ recorder , err := parrot .NewRecorder (parrot .WithHost (recorderHost ))
255241 if err != nil {
256242 panic (err )
257243 }
258244
259245 // Register the recorder with the parrot instance
260- resp , err = client .R (). SetBody ( recorder ). Post ( parrot . RecorderRoute )
246+ err = client .RegisterRecorder ( recorder )
261247 if err != nil {
262248 panic (err )
263249 }
264- if resp .StatusCode () != http .StatusCreated {
265- panic (fmt .Sprintf ("failed to register recorder, got %d status code" , resp .StatusCode ()))
250+
251+ recorders , err := client .Recorders ()
252+ if err != nil {
253+ panic (err )
266254 }
255+ fmt .Printf ("Found %d recorders\n " , len (recorders ))
267256
268257 go func () { // Some other service calls the /test route
269- _ , err := client .R (). Get ( "/test" )
258+ _ , err := client .CallRoute ( http . MethodGet , "/test" )
270259 if err != nil {
271260 panic (err )
272261 }
@@ -288,25 +277,26 @@ func ExampleRecorder_external() {
288277 }
289278 }
290279 // Output:
280+ // Found 1 recorders
291281 // GET:/test
292282 // GET
293283 // 200
294284 // Squawk
295285}
296286
297287// waitForParrotServerExternal checks the parrot server health endpoint until it returns a 200 status code or the timeout is reached
298- func waitForParrotServerExternal (client * resty .Client , timeoutDur time.Duration ) {
288+ func waitForParrotServerExternal (client * parrot .Client , timeoutDur time.Duration ) {
299289 ticker := time .NewTicker (50 * time .Millisecond )
300290 defer ticker .Stop ()
301291 timeout := time .NewTimer (timeoutDur )
302292 for { // Wait for the parrot server to start
303293 select {
304294 case <- ticker .C :
305- resp , err := client .R (). Get ( parrot . HealthRoute )
295+ healthy , err := client .Healthy ( )
306296 if err != nil {
307- continue
297+ continue // Ignore errors for health check as the server may not be ready yet
308298 }
309- if resp . StatusCode () == http . StatusOK {
299+ if healthy {
310300 return
311301 }
312302 case <- timeout .C :
0 commit comments