Skip to content

Commit

Permalink
Merge pull request #55 from lsst-sqre/tickets/DM-30752B
Browse files Browse the repository at this point in the history
Add stop() method to business class and provide defaults for implemen…
  • Loading branch information
athornton authored Jun 15, 2021
2 parents cc1219a + c1084bc commit 7935841
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 4 deletions.
3 changes: 3 additions & 0 deletions src/mobu/business.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,8 @@ async def run(self) -> None:
logger.info("Idling...")
await asyncio.sleep(5)

async def stop(self) -> None:
pass

def dump(self) -> dict:
return {"name": "Idle"}
3 changes: 3 additions & 0 deletions src/mobu/jupyterloginloop.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ async def run(self) -> None:
self.failure_count += 1
raise

async def stop(self) -> None:
await self._client.delete_lab()

def dump(self) -> dict:
return {
"name": "JupyterLoginLoop",
Expand Down
8 changes: 7 additions & 1 deletion src/mobu/jupyterpythonloop.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,22 @@
]

import asyncio
from dataclasses import dataclass
from dataclasses import dataclass, field

from mobu.business import Business
from mobu.jupyterclient import JupyterClient


@dataclass
class JupyterPythonLoop(Business):
_client: JupyterClient = field(init=False)

async def run(self) -> None:
logger = self.monkey.log
logger.info("Starting up...")

client = JupyterClient(self.monkey.user, logger, self.options)
self._client = client
await client.hub_login()
await client.ensure_lab()

Expand All @@ -31,5 +34,8 @@ async def run(self) -> None:
logger.info(reply)
await asyncio.sleep(60)

async def stop(self) -> None:
await self._client.delete_lab()

def dump(self) -> dict:
return {"name": "JupyterPythonLoop"}
2 changes: 2 additions & 0 deletions src/mobu/monkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ async def _runner(self) -> None:
except asyncio.CancelledError:
self.log.info("Shutting down")
run = False
await self.business.stop()
except Exception as e:
self.state = "ERROR"
self.log.exception(
Expand All @@ -116,6 +117,7 @@ async def _runner(self) -> None:
await asyncio.sleep(60)

async def stop(self) -> None:
await self.business.stop()
try:
await self._job.close(timeout=0)
except asyncio.TimeoutError:
Expand Down
3 changes: 3 additions & 0 deletions src/mobu/notebookrunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ async def run(self) -> None:
f"```{self.code}``` generated: ```{e}```"
)

async def stop(self) -> None:
await self._client.delete_lab()

def dump(self) -> dict:
return {
"name": "NotebookRunner",
Expand Down
13 changes: 10 additions & 3 deletions src/mobu/querymonkey.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import os
import random
import time
from dataclasses import field

import jinja2
import pyvo
Expand Down Expand Up @@ -32,8 +33,9 @@ def generate_parameters() -> dict:
class QueryMonkey(Business):
success_count: int = 0
failure_count: int = 0
_client: pyvo.dal.TAPService = field(init=False)

def _client(self) -> pyvo.dal.TAPService:
def _make_client(self) -> pyvo.dal.TAPService:
tap_url = Configuration.environment_url + "/api/tap"

s = requests.Session()
Expand Down Expand Up @@ -64,15 +66,15 @@ async def run(self) -> None:
"Query templates to choose from: %s", env.list_templates()
)

service = self._client()
self._client = self._make_client()

while True:
template_name = random.choice(env.list_templates())
template = env.get_template(template_name)
query = template.render(generate_parameters())
logger.info("Running: %s", query)
start = time.time()
await loop.run_in_executor(None, service.search, query)
await loop.run_in_executor(None, self._client.search, query)
end = time.time()
logger.info("Finished, took: %i seconds", end - start)
self.success_count += 1
Expand All @@ -81,6 +83,11 @@ async def run(self) -> None:
self.failure_count += 1
raise

async def stop(self) -> None:
loop = asyncio.get_event_loop()
await loop.run_in_executor(None, self._client.abort)
await loop.run_in_executor(None, self._client.delete)

def dump(self) -> dict:
return {
"name": "QueryMonkey",
Expand Down

0 comments on commit 7935841

Please sign in to comment.