Skip to content

Commit

Permalink
Merge da9f2fa into df0d014
Browse files Browse the repository at this point in the history
  • Loading branch information
Myoldmopar committed Nov 24, 2018
2 parents df0d014 + da9f2fa commit aa6af01
Show file tree
Hide file tree
Showing 15 changed files with 253 additions and 5 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ epregressions/files_to_run.txt
docs/_build
venv
.python-version
.coverage
EnergyPlusRegressionTool.egg-info
aa_testSuite_error.txt
htmlcov
8 changes: 3 additions & 5 deletions epregressions/energyplus.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,13 @@ def execute_energyplus(build_tree, entry_name, test_run_directory,

# Run EPMacro as necessary
if os.path.exists('in.imf'):
print("IMF file exists")
with open('in.imf', 'rb') as f:
lines = f.readlines()
newlines = []
for line in lines:
encoded_line = line.decode('UTF-8', 'ignore')
if '##fileprefix' in encoded_line:
newlines.append('')
print("Replaced fileprefix line with a blank")
else:
newlines.append(encoded_line)
with open('in.imf', 'w') as f:
Expand All @@ -73,7 +71,7 @@ def execute_energyplus(build_tree, entry_name, test_run_directory,
os.remove('in.idf')
os.rename(file_to_run_here, 'in.idf')
else:
return [build_tree['build_dir'], entry_name, False, current_process().name]
return [build_tree['build_dir'], entry_name, False, False, current_process().name]

# Run ExpandObjects and process as necessary
expand_objects_run = subprocess.Popen(expandobjects, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Expand Down Expand Up @@ -162,8 +160,8 @@ def execute_energyplus(build_tree, entry_name, test_run_directory,
return [build_tree['build_dir'], entry_name, True, False, current_process().name]

except Exception as e:
f = open("aa_testSuite_error.txt", 'w')
print(e, file=f)
with open("aa_testSuite_error.txt", 'w') as f:
print(e, file=f)
return [build_tree['build_dir'], entry_name, False, False, current_process().name]

finally:
Expand Down
17 changes: 17 additions & 0 deletions epregressions/tests/resources/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
This folder contains a bunch of resources for running tests.
These are extremely lightweight executable scripts that mimic the actual E+ toolchain.
There are also other files in here such as example weather files and E+ run files.

def execute_energyplus(build_tree, entry_name, test_run_directory,
run_type, min_reporting_freq, this_parametric_file, weather_file_name):
# setup a few paths
energyplus = build_tree['energyplus']
basement = build_tree['basement']
idd_path = build_tree['idd_path']
slab = build_tree['slab']
basementidd = build_tree['basementidd']
slabidd = build_tree['slabidd']
expandobjects = build_tree['expandobjects']
epmacro = build_tree['epmacro']
readvars = build_tree['readvars']
parametric = build_tree['parametric']
Empty file.
Empty file.
1 change: 1 addition & 0 deletions epregressions/tests/resources/dummy.basement.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#!/usr/bin/env python
2 changes: 2 additions & 0 deletions epregressions/tests/resources/dummy.energyplus.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#!/usr/bin/env python

5 changes: 5 additions & 0 deletions epregressions/tests/resources/dummy.epmacro.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/usr/bin/env python

import shutil

shutil.copy('in.imf', 'out.idf')
20 changes: 20 additions & 0 deletions epregressions/tests/resources/dummy.expandobjects.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/usr/bin/env python

file_contents = open('in.idf').read().upper()

if 'HVACTEMPLATE' in file_contents:
open('expanded.idf', 'w').write('HI')
open('BasementGHTIn.idf', 'w').write('HI')
open('GHTIn.idf', 'w').write('HI')
open('EPObjects.TXT', 'w').write('HI')
open('RunINPUT.TXT', 'w').write('HI')
open('RunDEBUGOUT.TXT', 'w').write('HI')
open('EPObjects.TXT', 'w').write('HI')
open('BasementGHTIn.idf', 'w').write('HI')
open('MonthlyResults.csv', 'w').write('HI')
open('BasementGHT.idd', 'w').write('HI')
open('SLABINP.TXT', 'w').write('HI')
open('GHTIn.idf', 'w').write('HI')
open('SLABSurfaceTemps.TXT', 'w').write('HI')
open('SLABSplit Surface Temps.TXT', 'w').write('HI')
open('SlabGHT.idd', 'w').write('HI')
Empty file.
10 changes: 10 additions & 0 deletions epregressions/tests/resources/dummy.parametric.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env python

import shutil

file_contents = open('in.idf').read().upper()

if 'EXPAND' in file_contents:
shutil.copy('in.idf', 'in-01.idf')
shutil.copy('in.idf', 'in-02.idf')
shutil.copy('in.idf', 'in-03.idf')
1 change: 1 addition & 0 deletions epregressions/tests/resources/dummy.readvars.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#!/usr/bin/env python
Empty file.
1 change: 1 addition & 0 deletions epregressions/tests/resources/dummy.slab.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
#!/usr/bin/env python
189 changes: 189 additions & 0 deletions epregressions/tests/test_energyplus.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
import os
import tempfile
import unittest

from epregressions.energyplus import execute_energyplus
from epregressions.structures import ReportingFreq, ForceRunType


class TestEnergyPlus(unittest.TestCase):

def setUp(self):
cur_dir_path = os.path.dirname(os.path.realpath(__file__))
self.resource_dir = os.path.join(cur_dir_path, 'resources')
self.build_tree = {
'energyplus': os.path.join(self.resource_dir, 'dummy.energyplus.py'),
'basement': os.path.join(self.resource_dir, 'dummy.basement.py'),
'idd_path': os.path.join(self.resource_dir, 'dummy.Energy+.idd'),
'slab': os.path.join(self.resource_dir, 'dummy.slab.py'),
'basementidd': os.path.join(self.resource_dir, 'dummy.basement.idd'),
'slabidd': os.path.join(self.resource_dir, 'dummy.slab.py'),
'expandobjects': os.path.join(self.resource_dir, 'dummy.expandobjects.py'),
'epmacro': os.path.join(self.resource_dir, 'dummy.epmacro.py'),
'readvars': os.path.join(self.resource_dir, 'dummy.readvars.py'),
'parametric': os.path.join(self.resource_dir, 'dummy.parametric.py'),
'build_dir': '/dummy/'
}
self.run_dir = tempfile.mkdtemp()

def test_eplus_passed_simple_dd_only(self):
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.DD,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=''
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_passed_simple_dd_only_with_rvi_mvi(self):
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('')
with open(os.path.join(self.run_dir, 'in.rvi'), 'w') as f:
f.write('HI')
with open(os.path.join(self.run_dir, 'in.mvi'), 'w') as f:
f.write('HI')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.DD,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=''
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_passed_simple_annual(self):
weather_file = os.path.join(self.resource_dir, 'dummy.in.epw')
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.ANNUAL,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=weather_file
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_passed_simple_no_force(self):
weather_file = os.path.join(self.resource_dir, 'dummy.in.epw')
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.NONE,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=weather_file
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_passed_hvac_template(self):
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('HVACTEMPLATE')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.DD,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=''
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_passed_macro(self):
with open(os.path.join(self.run_dir, 'in.imf'), 'w') as f:
f.write('##fileprefix line\n')
f.write('line2\n')
f.write('##fileprefix line3\n')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.DD,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=''
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_passed_parametric(self):
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('EXPAND')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.DD,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=True,
weather_file_name=''
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertTrue(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_failed_parametric(self):
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.DD,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=True,
weather_file_name=''
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertFalse(return_val[2])
self.assertFalse(return_val[3])

def test_eplus_failed_invalid_epw(self):
weather_file = os.path.join(self.resource_dir, 'DOES.NOT.EXIST.in.epw')
with open(os.path.join(self.run_dir, 'in.idf'), 'w') as f:
f.write('')
return_val = execute_energyplus(
build_tree=self.build_tree,
entry_name='entry_name',
test_run_directory=self.run_dir,
run_type=ForceRunType.ANNUAL,
min_reporting_freq=ReportingFreq.HOURLY,
this_parametric_file=False,
weather_file_name=weather_file
)
self.assertEqual('/dummy/', return_val[0])
self.assertEqual('entry_name', return_val[1])
self.assertFalse(return_val[2]) # Fail
self.assertFalse(return_val[3])

0 comments on commit aa6af01

Please sign in to comment.