Skip to content

Commit

Permalink
#96 Added restler custom generator (#97)
Browse files Browse the repository at this point in the history
  • Loading branch information
vityaman authored Apr 27, 2024
1 parent 17f4a1e commit bbd7ad3
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
1 change: 1 addition & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ services:
stdin_open: true
tty: true
restart: always
entrypoint: ["sh", "-c", "sleep 8 && ./lms/infra/fuzzing/restler/compile.sh && ./lms/infra/fuzzing/restler/fuzz.sh"]
volumes:
- .:/lms
networks:
Expand Down
43 changes: 43 additions & 0 deletions infra/fuzzing/restler/generator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import random
import string
import datetime


def generate_string(**kwargs):
min_length = 4
max_length = 16
alphabet = string.ascii_lowercase + string.digits
while True:
length = random.randint(min_length, max_length)
yield ''.join(random.choice(alphabet) for _ in range(length))


def generate_int(**kwargs):
while True:
yield str(random.randint(-10, 100))


def generate_datetime(**kwargs):
def random_date(start, end):
"""
https://stackoverflow.com/questions/553303/generate-a-random-date-between-two-other-dates
This function will return a random datetime between two datetime objects.
"""
delta = end - start
int_delta = (delta.days * 24 * 60 * 60) + delta.seconds
random_second = random.randrange(int_delta)
return start + datetime.timedelta(seconds=random_second)

min = datetime.datetime.strptime('1/1/1990 1:30 PM', '%m/%d/%Y %I:%M %p')
max = datetime.datetime.strptime('1/1/2025 4:50 AM', '%m/%d/%Y %I:%M %p')

while True:
yield random_date(min, max)


value_generators = {
"restler_fuzzable_string": generate_string,
"restler_fuzzable_datetime": generate_datetime,
"restler_fuzzable_int": generate_int,
}
3 changes: 2 additions & 1 deletion infra/fuzzing/restler/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
"custom_non_bug_codes": ["200", "400", "404", "406", "409", "431"],
"time_budget": 1,
"add_fuzzable_dates": true,
"max_request_execution_time": 4
"max_request_execution_time": 4,
"custom_value_generators": "/lms/infra/fuzzing/restler/generator.py"
}

0 comments on commit bbd7ad3

Please sign in to comment.