Skip to content

Commit

Permalink
Merge pull request #97 from rte-france/circleci-project-setup
Browse files Browse the repository at this point in the history
Circleci project setup
  • Loading branch information
marota authored Dec 19, 2021
2 parents cc197ad + 3e3d771 commit 5d33d32
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 11 deletions.
47 changes: 47 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Use the latest 2.1 version of CircleCI pipeline process engine.
# See: https://circleci.com/docs/2.0/configuration-reference
version: 2.1

# Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.
# See: https://circleci.com/docs/2.0/orb-intro/
orbs:
# The python orb contains a set of prepackaged CircleCI configuration you can use repeatedly in your configuration files
# Orb commands and jobs help you with common scripting around a language/tool
# so you dont have to copy and paste it everywhere.
# See the orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python
python: circleci/[email protected]

# Define a job to be invoked later in a workflow.
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
jobs:
build-and-test: # This is the name of the job, feel free to change it to better match what you're trying to do!
# These next lines defines a Docker executors: https://circleci.com/docs/2.0/executor-types/
# You can specify an image from Dockerhub or use one of the convenience images from CircleCI's Developer Hub
# A list of available CircleCI Docker convenience images are available here: https://circleci.com/developer/images/image/cimg/python
# The executor is the environment in which the steps below will be executed - below will use a python 3.8 container
# Change the version below to your required version of python
docker:
- image: cimg/python:3.8
# Checkout the code as the first step. This is a dedicated CircleCI step.
# The python orb's install-packages step will install the dependencies from a Pipfile via Pipenv by default.
# Here we're making sure we use just use the system-wide pip. By default it uses the project root's requirements.txt.
# Then run your tests!
# CircleCI will report the results back to your VCS provider.
steps:
- checkout
- python/install-packages:
pkg-manager: pip
# app-dir: ~/project/package-directory/ # If you're requirements.txt isn't in the root directory.
# pip-dependency-file: test-requirements.txt # if you have a different name for your requirements file, maybe one that combines your runtime and test requirements.
- run:
name: Run tests
# This assumes pytest is installed via the install-package step above
command: pytest tests --ignore tests/test_simulation.py --ignore tests/test_simulation_expert_system.py -v

# Invoke jobs via workflows
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
workflows:
sample: # This is the name of the workflow, feel free to change it to better match your workflow.
# Inside the workflow, you define the jobs you want to run.
jobs:
- build-and-test
5 changes: 4 additions & 1 deletion grid2viz/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ def main():
app_run(args.port, args.debug, page)


def make_cache():
def make_cache(agent_selection=None):
from grid2viz.src.manager import (
scenarios,
agents,
Expand All @@ -188,6 +188,9 @@ def make_cache():
cache_dir,
)

if(agent_selection is not None):
agents=[agent for agent in agents if agent in agent_selection]

from pathos.multiprocessing import ProcessPool

if not os.path.exists(cache_dir):
Expand Down
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,5 @@ numpy == 1.19.3
seaborn == 0.11.0
nbgitpuller == 0.9.0
jupyter-server-proxy == 1.5.0
pytest

40 changes: 30 additions & 10 deletions tests/test_make_cache.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,40 @@
import shutil
import subprocess
import unittest
from grid2viz.main import make_cache

# We need to make this below so that the manager.py finds the config.ini
os.environ["GRID2VIZ_ROOT"] = os.path.join(
pathlib.Path(__file__).parent.absolute(), "data"
)

agents_path = os.path.join(pathlib.Path(__file__).parent.absolute(), "data", "agents")

#config_file_path = os.path.join(os.environ["GRID2VIZ_ROOT"], "config.ini")

class TestMakeCache(unittest.TestCase):
def setUp(self):
self.agent_path = os.path.join(
pathlib.Path(__file__).parent.absolute(), "data", "agents"
)
if os.path.isdir(os.path.join(self.agent_path, "_cache")):
shutil.rmtree(os.path.join(self.agent_path, "_cache"))
self.agent_path = agents_path
self.agent="greedy-baseline"
cache_file_path=os.path.join(self.agent_path, "_cache", "000",self.agent+".dill")
if os.path.exists(cache_file_path):
os.remove(cache_file_path)
#if os.path.isdir(os.path.join(self.agent_path, "_cache")):
# shutil.rmtree(os.path.join(self.agent_path, "_cache"))

def test_make_cache(self):
print(self.agent_path)
cmd = ["grid2viz", "--agents_path", self.agent_path, "--cache"]
rv = subprocess.run(
cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True
)
self.assertEqual(rv.returncode, 0)
try:
make_cache(agent_selection=[self.agent])#to run the test quicker
except Exception as e:
print(e)
assert(False)

#calling grid2viz cli does not work when testing on circle ci
#cmd = ["grid2viz", "--agents_path", self.agent_path, "--cache"]
#rv=os.system("grid2viz --agents_path "+self.agent_path+" --cache")
#rv = subprocess.run(
# cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE#, shell=True
#)
#self.assertEqual(rv.returncode, 0)
#self.assertEqual(rv, 0)

0 comments on commit 5d33d32

Please sign in to comment.