Comments (2)
Hi @smithsp -- You are correct that the MDSplus test suite needs improvements. (For example, I cannot find any IDL tests in the test suite.)
The recent failures of my first two fixes for Issue #2625 do indeed underscore the need for better tests. This is not an excuse but rather an explanation of what went awry. Simply put, there were these factors: new developer, no IDL test infrastructure, missing context in the bug report, and pressure to fix ASAP.
-
Fix 1. I was tasked with fixing Issue 2625 ASAP; Sean had suggested starting the connection / socket IDs at 1 (instead of zero). As a new member of the MDSplus software team, it never occurred to me that DIII-D had MDSplus servers that could not be upgraded. And thus when GA tested this succinct fix to the C code, the fix broke because new software was contacting a sever with old software. As you noted, this highlights the need for cross-version testing with multiple servers. This feature will have to be added to the test suite.
-
Fix 2. The second approach was to find an IDL-only work around to IDL's poorly implemented
keyword_set()
function, and that also would not require extraneous connections (to preserve the best possible performance). This fix was riskier than Fix 1 because it involved more code changes, plus I was not confident it would work for allmdsvalue
scenarios. Nonetheless, the fix did work for the scenarios described in the initial report for Issue 2625. However, because I am new to the team, I didn't realize that I had to test the full IDL API. After GA reported problems with Fix 2, other portions of the IDL API were investigated and uncovered some places that I was unaware needed to be included in Fix 2. Unfortunately, the investigation also revealed some scenarios withmdsvalue
that could not be fixed with this technique. -
Fix 3. Sean also suggested the the fix of last resort should be to open an extraneous socket (i.e., take a minor hit on performance). Doing so bypasses the limitation with IDL's
keyword_set()
function. That fix has been completed and appears to work. However, as there is no full test of the IDL API, there remains a risk (albeit low) that there might be issues with this fix too. A PR for this fix will be submitted tonight around 11:20 p.m. EDT. So after the usual review process (and manual testing), will be merged to alpha and made available to GA. -
Fix 4. It is possible to write a new function,
mds_keyword_set()
to replace IDL's poorly implementedkeyword_set()
function. Initial testing of this approach works well. The benefit is it eliminates the extraneous connection of Fix 3. The downside is that it has a somewhat larger footprint (however, considerably less than Fix 2).
Summary is that we appreciate the bug reports, feedback and offers to collaborate on improving the test suite.
Mention: @sflanagan @ModestMC @WhoBrokeTheBuild
from mdsplus.
@smithsp Thank you for your feedback and help on this issue, and on testing in general. As you can see above, we have been diligently working to solve the problem that @sflanagan found. We are are working closely with @sflanagan and @ModestMC, we are finding this very useful and fruitful.
Please keep the questions, bugs and feedback flowing.
_josh
from mdsplus.
Related Issues (20)
- TCL's `set current` and `show current` commands have problems when using the `$default_tree_path` HOT 6
- Ubuntu 22 build Makefile error HOT 4
- jScope freezes during loading with a "broken pipe" error HOT 20
- closeAllTrees() fails for thin client in python HOT 2
- Make the MDSplus data types or at least the scalar types json serializable
- Python API breaks when evaluating certain lowercase tags HOT 9
- Add the ability to easily make a static snapshot of a signal HOT 8
- The Motif `traverser` application throws an error when entering an expression into newly created non-text nodes
- Build: add Amazon Linux 2023 as a supported platform
- Build: add Ubuntu 22 on ARM64 as a supported platform
- Build: MATLAB test suite needs correct formatting for the expected output
- Writing to the "current shot" (shot # = 0) via thick-client does not work HOT 3
- MDSplus tries to use OFD locks on systems that do not support it HOT 2
- Unsuccessful read with SS-SUCESS exception using Tree.getNode(...).getData() in Python HOT 31
- MDSplus dispatcher opens lots of files HOT 54
- Activating the `MDSDBG()` debug statements generates compiler errors
- Building on conda forge OSX fails HOT 12
- Mdstcl's "dispatch" feature can trigger segfaults and other errors if flood the "action server" with hundreds of actions HOT 6
- Missing "mdsobjectscppshr-vs.lib" in vs devtools lib32 folder HOT 6
- Some calling routines do not properly handle SsINTERNAL, C_ERROR, and/or FALSE returned by low-level routines HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mdsplus.