Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

interface raven running raven #341

Merged
merged 51 commits into from
Sep 22, 2017
Merged

Conversation

alfoa
Copy link
Collaborator

@alfoa alfoa commented Sep 9, 2017


Pull Request Description

What issue does this change request address? (Use "#" before the issue to link it, i.e., #42.)

Closes #342

What are the significant changes in functionality due to this change request?

New interface to run RAVEN running RAVEN


For Change Control Board: Change Request Review

The following review must be completed by an authorized member of the Change Control Board.

  • 1. Review all computer code. Done
  • 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts). Manual update
  • 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details. Yes
  • 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass. Yes
  • 5. If significant functionality is added, there must be tests added to check this. Tests should cover all possible options. Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in XML block, the node <internalParallel> to True. Tests added
  • 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change. The requirements and the requirements test shall be in sync. no change
  • 7. The merge request must reference an issue. If the issue is closed, the issue close checklist shall be done. Close checklist done
  • 8. If an analytic test is changed/added is the the analytic documentation updated/added?
    No change

Checklist passes. By @joshua-cogliati-inl on 2017-Sept-22

@alfoa alfoa added task This tag should be used for any new capability, improvement or enanchment priority_critical labels Sep 9, 2017
@alfoa alfoa changed the title WIP: interface raven running raven interface raven running raven Sep 18, 2017
Copy link
Collaborator

@PaulTalbot-INL PaulTalbot-INL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No problems found, but a few comments that could use addressing. Once we resolve those and the Windows test failures, we should be good to go.

Another general comment: did we add various parallel tests for this (shared, internalParallel, and MPI)? I feel like when we qsub the master and slave cases both especially there's a lot that could behave strangely.

from utils import utils
from CodeInterfaceBaseClass import CodeInterfaceBase
import DataObjects
#import RavenData
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this guy?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

leftover...removing

if not self.hasMethods['scalar'] and not self.hasMethods['noscalar']:
raise IOError(self.printTag +' ERROR: the conversionModule "'+extModForVarsManipulationPath
+'" does not contain any of the usable methods! Expected at least '
+'one of: "manipulateScalarSampledVariables" and/or "manipulateScalarSampledVariables"!')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no issue with this being an error, but would it be better as a warning?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to keep this as an error since the only reason why a user should "import" that module is to implement one of those 2 methods. Otherwise the interface is not going to do anything with it.

dataObjectsToReturn[dataObjectInfo[0]] = DataObjects.returnInstance(dataObjectInfo[1],None)
dataObjectsToReturn[dataObjectInfo[0]]._readMoreXML(dataObjectInfo[2])
dataObjectsToReturn[dataObjectInfo[0]].name = filename
dataObjectsToReturn[dataObjectInfo[0]].loadXMLandCSV(os.path.join(workingDir,self.innerWorkingDir))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ooh, this is nice. I like this implementation.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:P

splittedComp = subNode.split("@")
component = splittedComp[0]
attribPath = ""
attribConstruct = OrderedDict()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious, why OrderedDict? Does the order of the attributes come into play?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes the orderedDict is needed to detect if we need to change the attribute value or the node itself (see the if statement later on)

allowAddNodes.append(pathNode)
else:
allowAddNodes.append(None)
#allowAddNodes.append(returnElement.findall(pathNode))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commented code

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removing...

modifyDict['Distributions|Normal@name:Andrea|sigma'] = 2
parser.printInput(lupo,outfile="lupo1.xml")
lupo2 = parser.modifyOrAdd(modifyDict,allowAdd=True)
parser.printInput(lupo2,outfile="lupo2.xml")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the unit test, but it seems to only apply to your user directory.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right....leftover... I will modify it.

for inKey, value in unstructuredInputs.items():
appendDict['inputSpaceParams'][inKey] = value[i]
for outKey, value in outputs.items():
appendDict['outputSpaceParams'][outKey] = value[i]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I may be reading this wrong, but does this always take all the results from the slave raven run, or can it take selective results, as requested by the output data object?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now it takes all results.
I opened an issue to modify it later. (#363)

<batchSize>3</batchSize>
<!--
<internalParallel>True</internalParallel>
-->
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

commented xml

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removing

</RunInfo>

<Files>
</Files>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extra node?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Forgot it.

removing...

@@ -0,0 +1,186 @@
<?xml version="1.0" ?>
<Simulation verbosity="debug">

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we usually have <TestInfo> for code interface tests? I don't know if it makes sense to have it for a sub-input of a RRR test, but maybe it would help with clarity?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that all the CodeInterface tests have a TestInfo.
But probably the sub-input TestInfo should be removed (since the real test is the master input)

Copy link
Contributor

@joshua-cogliati-inl joshua-cogliati-inl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks fine with my first look. i had some comments and questions.

The RAVEN interface is meant to provide the possibility to execute a RAVEN input file
driving a set of SLAVE RAVEN calculations. For example, if the user wants to optimize the parameters
of a surrogate model (e.g. minimizing the distance between the surrogate predictions and the real data), he
can achieve this task setting up a RAVEN input file (master) that performs an optimization on the feature
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"this task setting up a" -> "this task by setting up a"

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addressed...

can achieve this task setting up a RAVEN input file (master) that performs an optimization on the feature
space characterized by the surrogate model parameters, whose training and validation assessment is performed in the SLAVE
RAVEN runs.
// There are some limitations for this interface:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should "//" be "\\"?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

completely right

\item only a maximum of two Outstreams can be collected (1 PointSet and 1 HistorySet)
\end{itemize}

Like for every other interface, most of the RAVEN workflow stays the same independently on the type of Model (i.e. Code) is used.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"independently on the type of Model (i.e. Code) is used." -> "independently of which type of Model (i.e. Code) is used."

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addressed

</MonteCarlo>
</Samplers>
\end{lstlisting}
In the above example, it can be inferred that each XML node (subnode) needs to be separated by a ``|'' separator. In addition,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, in XPath, / is used as a separator. Since XPath is not being followed exactly, the full syntax supported should probably be documented.

warnings.simplefilter('default',DeprecationWarning)

import os
from __builtin__ import any as b_any
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we need to create 'b_any'? Could we just use 'any'?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It prevents the need to explicitly create the list out of a generator. I don't know what the efficiency gain is in this instance.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

>>> import __builtin__
>>> __builtin__.any is any
True

I think b_any is exactly the same as any.

Copy link
Collaborator

@PaulTalbot-INL PaulTalbot-INL Sep 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My only reference comes from searching it:
https://stackoverflow.com/questions/16380326/check-if-substring-is-in-a-list-of-strings

On further inspection, it appears the OP of the stack overflow question had possibly overwritten his any and needed a replacement.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, they did from numpy import * which is forbidden in the raven code standards anyway.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And for what it is worth, the full correct way to define b_any is:

import sys
if sys.version_info.major > 2:
  from builtins import any as b_any
else:
  from  __builtin__ import any as b_any

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

addressed

@ Out, None.
"""
if os.path.basename(xmlNode.find("executable").text) != 'raven_framework':
raise IOError(self.printTag+' ERROR: executable must be "raven_framework" (in whatever location)!')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not quite sure why this is an error, but I supposed it is easier to switch an error to something that is allowed than the other way round.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I decided to raise an error because in the raven_framework we do a lot of checks on the libraries that we do not do in Driver.py, so I thought it would be safer to force the user to use the "raven_framework" wrapper.

Do you think I should allow also to directly point to Driver.py?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I would rather not allow pointing directly to Driver.py. I think leaving it an error for now is fine, and if someone thinks of a good reason to use something else, we can change it at that point.

except:
return failure
readLines = outputToRead.readlines()
if not b_any("raise" in x for x in readLines[-20:]):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What are we looking for that would not be found by the executable's return code?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After discussing with Josh, it looks like that the return code is masked by the jobhandler thread.

@ Out, None
"""
# the dirName is actually in workingDir/StepName/prefix => we need to go back 2 dirs
dirName = os.path.join(currentDirName,"../../")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly this should be:

dirName = os.path.dirname(os.path.dirname(currentDirName))
``

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used the separator os.path.sep. This suggested implementation does not work (looks like)

return returnElement

if __name__ == '__main__':
parser = RAVENparser("/Users/alfoa/projects/raven_github/raven/tests/framework/test_redundant_inputs.xml")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this part is hard coded. Should the if __name__ == '__main__' block be removed?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

removed...

if type(outputFile).__name__ == 'dict':
ravenCase = True
if ravenCase and self.code.__class__.__name__ != 'RAVEN':
self.raiseAnError(RuntimeError, 'The return argument from "finalizeCodeOutput" must be a str containing the new output file root!')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This basically forbids any code besides RAVEN from returning a dictionary. I am trying to decided if this is good or bad.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes I did on purpose to avoid any other code interface to return a different thing than a outputfilename root...

I thinks we should allow to do that but the system should be better designed...

inputAsString = "".join([s for s in inputAsString.strip().splitlines(True) if s.strip()])
if outfile==None:
outfile =self.inputfile
IOfile = open(outfile,'wb')
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason this is opened as binary 'wb' as opposed to 'w'?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. No reason. I converted it into "w+"

@alfoa
Copy link
Collaborator Author

alfoa commented Sep 19, 2017

Addressed Josh's and Paul's comments so far... now working on the BatchSize as we discussed in person...

@joshua-cogliati-inl
Copy link
Contributor

At least on my windows computer, changing bin/bash to usr/bin/bash makes the RAVEN running RAVEN test work, so I pushed bc221d9

@bobkinl
Copy link
Collaborator

bobkinl commented Sep 21, 2017

Interesting, on both my PC (which is a pretty new install) and RAVENHOME (which is older) there are both /bin/bash and /usr/bin/bash.

@joshua-cogliati-inl
Copy link
Contributor

That is interesting. And if RAVENHOME has it, then I don't know why the windows test is failing because the only reason it failed on my windows computer was because of the /bin/bash problem. After I fixed that it worked.

@joshua-cogliati-inl
Copy link
Contributor

After looking closer, I noticed that "ls -l /bin/bash" finds bash, but if you look in windows explorer, there is no "C:\msys64\bin\bash.exe", but there is a "C:\msys64\usr\bin\bash.exe" So that explains what is happening. msys is doing some magic to make it look like there is a /bin/bash.

@joshua-cogliati-inl
Copy link
Contributor

Okay, it passed on RAVENHOME:
\tests\framework\CodeInterfaceTests.RAVENrunningRAVEN..................................................... OK

@joshua-cogliati-inl
Copy link
Contributor

@PaulTalbot-INL Have all your comments been address? If yes, can you switch it to a comment, not a request changes. If no, which still need to be addressed? (All the ones on non-stale diffs seem to have been addressed.) Thanks.

Copy link
Collaborator

@PaulTalbot-INL PaulTalbot-INL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes were caught.

@joshua-cogliati-inl
Copy link
Contributor

Thanks @PaulTalbot-INL I'll review it again and do the checklist.

Copy link
Contributor

@joshua-cogliati-inl joshua-cogliati-inl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code reviewed and I approve.

readLines = outputToRead.readlines()
for badMessage in ["Traceback ","raise","IOError"]:
if not any(badMessage in x for x in readLines):
failure = False
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If "IOError" is not in the lines, this will have failure = False (even if say Traceback or raise is found). I think you want:

foundBadMessage = False
 for badMessage in ["Traceback ","raise","IOError"]:
      if any(badMessage in x for x in readLines):
        foundBadMessage = True
if not foundBadMessage:
  failure = False

@joshua-cogliati-inl
Copy link
Contributor

As soon as the tests finish, I'll do the checklist.

@moosebuild
Copy link

Job Test linux on bf2e128 : invalidated by @alfoa

understandable error O_o

@joshua-cogliati-inl
Copy link
Contributor

joshua-cogliati-inl commented Sep 21, 2017

Basically, it is failing because conda failed to list the environment.

framework/CodeInterfaceTests.RAVENrunningRAVEN: An unexpected error has occurred.
framework/CodeInterfaceTests.RAVENrunningRAVEN: Please consider posting the following information to the
framework/CodeInterfaceTests.RAVENrunningRAVEN: conda GitHub issue tracker at:
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN:     https://github.com/conda/conda/issues
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: Current conda install:
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN:                platform : linux-64
framework/CodeInterfaceTests.RAVENrunningRAVEN:           conda version : 4.3.24
framework/CodeInterfaceTests.RAVENrunningRAVEN:        conda is private : False
framework/CodeInterfaceTests.RAVENrunningRAVEN:       conda-env version : 4.3.24
framework/CodeInterfaceTests.RAVENrunningRAVEN:     conda-build version : 3.0.9
framework/CodeInterfaceTests.RAVENrunningRAVEN:          python version : 2.7.13.final.0
framework/CodeInterfaceTests.RAVENrunningRAVEN:        requests version : 2.14.2
framework/CodeInterfaceTests.RAVENrunningRAVEN:        root environment : /opt/moose/miniconda  (read only)
framework/CodeInterfaceTests.RAVENrunningRAVEN:     default environment : /home/moosetest/.conda/envs/raven_libraries
framework/CodeInterfaceTests.RAVENrunningRAVEN:        envs directories : /home/moosetest/.conda/envs
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           /opt/moose/miniconda/envs
framework/CodeInterfaceTests.RAVENrunningRAVEN:           package cache : /opt/moose/miniconda/pkgs
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           /home/moosetest/.conda/pkgs
framework/CodeInterfaceTests.RAVENrunningRAVEN:            channel URLs : https://repo.continuum.io/pkgs/free/linux-64
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           https://repo.continuum.io/pkgs/free/noarch
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           https://repo.continuum.io/pkgs/r/linux-64
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           https://repo.continuum.io/pkgs/r/noarch
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           https://repo.continuum.io/pkgs/pro/linux-64
framework/CodeInterfaceTests.RAVENrunningRAVEN:                           https://repo.continuum.io/pkgs/pro/noarch
framework/CodeInterfaceTests.RAVENrunningRAVEN:             config file : None
framework/CodeInterfaceTests.RAVENrunningRAVEN:              netrc file : None
framework/CodeInterfaceTests.RAVENrunningRAVEN:            offline mode : False
framework/CodeInterfaceTests.RAVENrunningRAVEN:              user-agent : conda/4.3.24 requests/2.14.2 CPython/2.7.13 Linux/3.13.0-116-generic debian/jessie/sid glibc/2.19    
framework/CodeInterfaceTests.RAVENrunningRAVEN:                 UID:GID : 1002:1002
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: `$ /opt/moose/miniconda/bin/conda-env list`
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN:     Traceback (most recent call last):
framework/CodeInterfaceTests.RAVENrunningRAVEN:       File "/opt/moose/miniconda/lib/python2.7/site-packages/conda/exceptions.py", line 634, in conda_exception_handler
framework/CodeInterfaceTests.RAVENrunningRAVEN:         return_value = func(*args, **kwargs)
framework/CodeInterfaceTests.RAVENrunningRAVEN:       File "/opt/moose/miniconda/lib/python2.7/site-packages/conda_env/cli/main_list.py", line 32, in execute
framework/CodeInterfaceTests.RAVENrunningRAVEN:         common.handle_envs_list(info_dict[\'envs\'], not args.json)
framework/CodeInterfaceTests.RAVENrunningRAVEN:       File "/opt/moose/miniconda/lib/python2.7/site-packages/conda/cli/common.py", line 640, in handle_envs_list
framework/CodeInterfaceTests.RAVENrunningRAVEN:         disp_env(prefix)
framework/CodeInterfaceTests.RAVENrunningRAVEN:       File "/opt/moose/miniconda/lib/python2.7/site-packages/conda/cli/common.py", line 637, in disp_env
framework/CodeInterfaceTests.RAVENrunningRAVEN:         print(fmt % (name, default, prefix))
framework/CodeInterfaceTests.RAVENrunningRAVEN:     IOError: [Errno 32] Broken pipe
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
framework/CodeInterfaceTests.RAVENrunningRAVEN: 
framework/CodeInterfaceTests.RAVENrunningRAVEN:       .---.        .------######       #####     ###   ###  ########  ###    ###
framework/CodeInterfaceTests.RAVENrunningRAVEN:      /     \\  __  /    --###  ###    ###  ###   ###   ###  ###       #####  ###
framework/CodeInterfaceTests.RAVENrunningRAVEN:     / /     \\(  )/    --###  ###    ###   ###  ###   ###  ######    ### ######
framework/CodeInterfaceTests.RAVENrunningRAVEN:    //////   \' \\/ `   --#######     #########  ###   ###  ###       ###  #####
framework/CodeInterfaceTests.RAVENrunningRAVEN:   //// / // :    :   -###   ###   ###   ###    ######   ####      ###   ####
framework/CodeInterfaceTests.RAVENrunningRAVEN:  // /   /  /`    \'---###    ###  ###   ###      ###    ########  ###    ###
framework/CodeInterfaceTests.RAVENrunningRAVEN: //          //..\\
framework/CodeInterfaceTests.RAVENrunningRAVEN: ===========UU====UU=============================================================

I suppose if we consider this a problem, I can think of two ways to fix it.
One would be to find the start of the actual raven output, and then only look for errors after that.

The other would be to modify the line in scripts/setup_raven_libs
to:

if conda env list 2> /dev/null | grep -q raven_libraries;

Update:
What was happening was grep -q "Exit[s] immediately with zero status if any match is found" but this causes an error in python:
https://stackoverflow.com/questions/15793886/how-to-avoid-a-broken-pipe-error-when-printing-a-large-amount-of-formatted-data

@moosebuild
Copy link

Job Test linux on bf2e128 : invalidated by @joshua-cogliati-inl

conda failed.

Copy link
Contributor

@joshua-cogliati-inl joshua-cogliati-inl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approve changes.

@PaulTalbot-INL
Copy link
Collaborator

Just checking, we added a test to cover the failure case @AaronEpiney was seeing, right? The rerun with raven running raven, including the lock file and the job handler in kwargs?

Copy link
Collaborator Author

@alfoa alfoa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved

@alfoa
Copy link
Collaborator Author

alfoa commented Sep 22, 2017

@PaulTalbot-INL No I did not add the test yet but I am working on since I came in.

Thanks

@alfoa
Copy link
Collaborator Author

alfoa commented Sep 22, 2017

Added test to check the correct collection of failed runs from EnsembleModel

Copy link
Contributor

@joshua-cogliati-inl joshua-cogliati-inl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked cfa6e32 and I approve.

@joshua-cogliati-inl
Copy link
Contributor

The tests have passed. Is it ready for final review?

@alfoa
Copy link
Collaborator Author

alfoa commented Sep 22, 2017

Yes it is.
Andrea

@joshua-cogliati-inl joshua-cogliati-inl merged commit 489f6f2 into devel Sep 22, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority_critical task This tag should be used for any new capability, improvement or enanchment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

RAVEN running RAVEN
7 participants