Giter Club home page Giter Club logo

Comments (2)

mwinkel-dev avatar mwinkel-dev commented on June 20, 2024

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 all mdsvalue 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 with mdsvalue 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 implemented keyword_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.

joshStillerman avatar joshStillerman commented on June 20, 2024

@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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.