Skip to content

Object of type '_DeferredExpression' is not JSON serializable #1459

@jgphpc

Description

@jgphpc

This code will fail with:

version:           3.2-dev0 (rev: 576eb3f1)
PERFORMANCE REPORT
------------------------------------------------------------------------------
FailTest
- dom:login
   - PrgEnv-gnu
      * num_tasks: 1
      * elapsed_time: 8 s
      * filename: 8 (9.cpp)
------------------------------------------------------------------------------
reframe: type error: ../../../../../../../../usr/lib64/python3.6/json/encoder.py:180: 
Object of type '_DeferredExpression' is not JSON serializable
                        o.__class__.__name__)

when run like this:

reframe -C cscs.py -p PrgEnv-gnu \
--keep-stage-files --prefix=$SCRATCH \
--report-file eff.json \
--performance-report -v -r -c bug_report.py'

I believe the issue is in the json reporting.

import os, sys
import reframe as rfm
import reframe.utility.sanity as sn


@rfm.simple_test
class FailTest(rfm.RunOnlyRegressionTest):
    def __init__(self):
        self.descr = ('RunOnlyRegressionTest')
        self.valid_systems = ['dom:login']
        self.valid_prog_environs = ['PrgEnv-gnu']
        self.executable = 'echo 9.cpp'
        self.sanity_patterns = sn.assert_found('9', self.stdout)
        self.perf_patterns = {
            'elapsed_time': self.elapsed,
            'filename': self.elapsed,
        }
        self.reference = {
            '*': {
                'elapsed_time': (0, None, None, 's'),
                'filename': (0, None, None, self.fnm),
            }
        }

    @property
    @sn.sanity_function
    def elapsed(self):
        return 8

    @property
    @sn.sanity_function
    def fnm(self):
        return '(9.cpp)'

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions