Skip to content

Commit 85b4ccd

Browse files
made scalability directory optional
1 parent 8d3fad8 commit 85b4ccd

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

src/feelpp/benchmarking/reframe/regression.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class RegressionTest(ReframeSetup):
1818
def initHandlers(self):
1919
self.validation_handler = ValidationHandler(self.app_reader.config.sanity)
2020
if self.app_reader.config.scalability:
21-
self.scalability_handler = ScalabilityHandler(self.app_reader.config.scalability)
21+
self.scalability_handler = ScalabilityHandler(self.app_reader.config.scalability, os.path.join(self.stagedir,self.stdout.evaluate()))
2222
else:
2323
self.scalability_handler = None
2424

@@ -84,7 +84,7 @@ def setPerfVars(self):
8484

8585
@run_before("cleanup")
8686
def removeDirectories(self):
87-
if self.app_reader.config.scalability and self.app_reader.config.scalability.clean_directory:
87+
if self.app_reader.config.scalability and self.app_reader.config.scalability.clean_directory and self.app_reader.config.scalability.directory:
8888
FileHandler.cleanupDirectory(self.app_reader.config.scalability.directory)
8989
if self.machine_reader.config.input_user_dir and self.app_reader.config.input_file_dependencies:
9090
DEBUG("REMOVING INPUT FILE DEPENDENCIES...")

src/feelpp/benchmarking/reframe/scalability.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,12 @@ def _extractVariables(self):
156156
class ExtractorFactory:
157157
"""Factory class for extractor strategies"""
158158
@staticmethod
159-
def create(stage,directory,index=None):
160-
filepath = os.path.join(directory,stage.filepath)
159+
def create(stage,directory,index=None, stdout = None):
160+
if stage.filepath == "stdout":
161+
filepath = stdout
162+
else:
163+
filepath = os.path.join(directory,stage.filepath)
164+
161165
if stage.format == "csv":
162166
return CsvExtractor(filepath=filepath, stage_name = stage.name, units=stage.units)
163167
elif stage.format == "tsv":
@@ -172,10 +176,11 @@ def create(stage,directory,index=None):
172176

173177
class ScalabilityHandler:
174178
""" Class to handle scalability related attributes"""
175-
def __init__(self,scalability_config):
179+
def __init__(self,scalability_config, stdout = None):
176180
self.directory = scalability_config.directory
177181
self.stages = scalability_config.stages
178182
self.custom_variables = scalability_config.custom_variables
183+
self.stdout = stdout
179184

180185
def getPerformanceVariables(self,index=None):
181186
""" Opens and parses the performance variable values depending on the config setup.
@@ -185,7 +190,7 @@ def getPerformanceVariables(self,index=None):
185190
"""
186191
perf_variables = {}
187192
for stage in self.stages:
188-
extractor = ExtractorFactory.create(stage,self.directory,index)
193+
extractor = ExtractorFactory.create(stage,self.directory,index, self.stdout)
189194
perf_variables.update( extractor.extract() )
190195

191196
return perf_variables

src/feelpp/benchmarking/reframe/schemas/scalability.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,17 @@ class CustomVariable(BaseModel):
4949
unit: str
5050

5151
class Scalability(BaseModel):
52-
directory: str
52+
directory: Optional[str] = None
5353
stages: List[Stage]
5454
custom_variables:Optional[List[CustomVariable]] = []
5555
clean_directory: Optional[bool] = False
56+
57+
@model_validator(mode = "after")
58+
def checkOptionalDirectory(self):
59+
if self.directory is None:
60+
#Directory should be specified if any stage has filename other than stdout
61+
for stage in self.stages:
62+
if stage.filepath != "stdout":
63+
raise ValueError("Directory should be specified for non-stdout output files")
64+
65+
return self

src/feelpp/benchmarking/reframe/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def setResources(self):
161161

162162
@run_before('run')
163163
def cleanupDirectories(self):
164-
if self.app_reader.config.scalability:
164+
if self.app_reader.config.scalability and self.app_reader.config.scalability.directory:
165165
FileHandler.cleanupDirectory(self.app_reader.config.scalability.directory)
166166

167167
@run_before('run')

0 commit comments

Comments
 (0)