API_DEBUG_SOLVER / environment /incident_generator.py
Kavya988's picture
Upload 29 files
d416acc verified
""" what it does :
is that Stores different API failure scenarios.
When the agent starts a new episode,
this file picks a random failure for the agent to debug.
"""
import random
INCIDENTS =[ # here we created mutiple incidents and in different episodes different incidents will be checked
{
"type": "auth_error",
"summary": "401 Unnathorized - API key expired",
"logs": ["ERROR : there is inavlid API key", "HINT : your key expired already "],
"fix_action": "refresh_token",
"code":401
},
{
"type": "missing_fields",
"summary": "400 bad request - email field is missing please check",
"logs": ["ERROR :Required field 'email' cannot be found" , "HINT : please add email to the request body "],
"fix_action": "add_field",
"code":400
},
{
"type": "rate_limit",
"summary": "429 too many requests - slow down ",
"logs": ["ERROR : the rate limit is exceeded " , "HINT : please wait for 1 minute before retrying "],
"fix_action": "wait_retry",
"code":429
},
{
"type": "wrong_endpoint",
"summary": "404 Not Found - API endpoint doesn't exist",
"logs": ["ERROR: POST /api/v2/data returned 404", "Hint: Use /api/v3/data instead"],
"fix_action": "change_endpoint",
"code": 404
},
{
"type": "server_error",
"summary": "500 Internal Server Error",
"logs": ["ERROR: Database connection failed", "Hint: Cannot fix automatically - escalate"],
"fix_action": "escalate",
"code": 500
},
{
"type": "timeout",
"summary": "request took too long",
"logs": ["ERROR : request timed out after 45 seconds", "Hint: server may be overloaded , please try again with backoff"],
"fix_action": "wait_retry",
"code": 408
},
]
def get_random_incident():
# this function is to return a random choice
return random.choice(INCIDENTS)
def get_incident_by_type(incident_type):
# Returns a specific incident - useful for grading system (score/marks/points)
for incident in INCIDENTS: # here we are having a loop
if incident["type"] == incident_type: # we chechking here if type matches or not
return incident
return None