Improve the Testing Framework This change includes the following improvements to the test framework 1. Checking each expected failure against the failure exception. 2. Checking against multiple causes of failure in case of multiple expected errors. 3. Check if a test that is expected to fail pass. 4. Make temp datasets use different storage path.