from locust import HttpLocust, TaskSet, task
from lxml import html
import requests as rq

class SimpleTests(TaskSet):

    @task
    def index(self):
        self.client.get("/", verify=False)

    @task
    def home(self):
        self.client.get("/runestone/static/thinkcspy/PythonTurtle/TheforLoop.html", verify=False)
        self.getAllAssets()

    @task
    def logrun(self):
        self.client.post("/runestone/ajax/hsblog",
            {'event': 'activecode', 'act': 'edit', 'div_id': 'logtest'},
            verify=False)

    @task
    def dynamicpage(self):
        self.r = self.client.get("/runestone/course/serve/thinkcspy/PythonTurtle/TheforLoop.html", verify=False)
        self.getAllAssets()

    def getAllAssets(self):
        tree = html.fromstring(self.r.text)
        csslinks = tree.xpath('//link/@href')
        jslinks = tree.xpath('//script/@src')
        base = self.r.url[:self.r.url.rfind('/')+1]
        for l in csslinks:
            rq.get(base + l, verify=False)

        for l in jslinks:
            rq.get(base + l, verify=False)

class WebsiteUser(HttpLocust):
    task_set = SimpleTests
    min_wait = 5000
    max_wait = 15000
    host = "https://rsvm"