| 1234567891011121314151617181920 |
- {
- "name": "verify-http-retry",
- "nodes": [
- {"id": "n1", "name": "Trigger", "type": "click-trigger", "position": {"x": 0, "y": 0}, "config": {}},
- {"id": "once", "name": "Without Retry", "type": "code", "position": {"x": 0, "y": 100},
- "config": {"timeout": 60,
- "code": "const t = Date.now(); let err = ''; try { smartbotic.http.request({ method: 'GET', url: 'http://10.255.255.1/nowhere', timeout: 1000 }); } catch (e) { err = String(e.message || e); } const elapsed = Date.now() - t; return { elapsed: elapsed, err: err, tookOneAttempt: elapsed < 2500 && err.indexOf('after 1 attempt') !== -1 };"}},
- {"id": "thrice", "name": "With Retry", "type": "code", "position": {"x": 0, "y": 200},
- "config": {"timeout": 60,
- "code": "const t = Date.now(); let err = ''; try { smartbotic.http.request({ method: 'GET', url: 'http://10.255.255.1/nowhere', timeout: 1000, retries: 2, retryDelayMs: 1000, retryMaxDelayMs: 5000 }); } catch (e) { err = String(e.message || e); } const elapsed = Date.now() - t; return { elapsed: elapsed, err: err, tookThreeAttempts: err.indexOf('after 3 attempt') !== -1, waitedAndDoubled: elapsed >= 5500 && elapsed < 9000 };"}}
- ],
- "connections": [
- {"sourceNodeId": "n1", "sourceOutput": "main", "targetNodeId": "once", "targetInput": "data"},
- {"sourceNodeId": "once", "sourceOutput": "main", "targetNodeId": "thrice", "targetInput": "data"}
- ],
- "expect": {
- "once": {"status": "completed", "output": {"result": {"tookOneAttempt": true}}},
- "thrice": {"status": "completed", "output": {"result": {"tookThreeAttempts": true, "waitedAndDoubled": true}}}
- }
- }
|