def test_nodesfilter(self):
        """Test parse_resources_nodes"""
        for testdata in RESOURCE_NODES:
            orig = testdata.pop("orig")
            resources = {}
            nodes = parse_resources_nodes(orig, "gengar", resources)
            self.assertEqual(
                "nodes=" + resources["nodes"],
                nodes,
                msg="nodes returned is equal to nodes=resources[nodes] (nodes=%s == %s)" % (resources["nodes"], nodes),
            )
            self.assertEqual(
                resources,
                testdata,
                msg="generated resources equal to expected (expected %s generated %s; orig %s)"
                % (testdata, resources, orig),
            )

        # up to now, 2 warnings
        warnings = get_warnings()
        self.assertEqual(
            warnings,
            [
                "Warning: unknown ppn (whatever) detected, using ppn=1",
                "Warning: unknown ppn (woohoo) detected, using ppn=1",
            ],
            msg="expected warnings after processing examples %s" % (warnings),
        )

        reset_warnings()
Example #2
0
    def test_nodesfilter(self):
        """Test parse_resources_nodes"""
        for testdata in RESOURCE_NODES:
            orig = testdata.pop('orig')
            resources = {}
            nodes = parse_resources_nodes(orig, 'gengar', resources)
            self.assertEqual(
                'nodes=' + resources['nodes'],
                nodes,
                msg=
                'nodes returned is equal to nodes=resources[nodes] (nodes=%s == %s)'
                % (resources['nodes'], nodes))
            self.assertEqual(
                resources,
                testdata,
                msg=
                'generated resources equal to expected (expected %s generated %s; orig %s)'
                % (testdata, resources, orig))

        # up to now, 2 warnings
        warnings = get_warnings()
        self.assertEqual(warnings, [
            'Warning: unknown ppn (whatever) detected, using ppn=1',
            'Warning: unknown ppn (woohoo) detected, using ppn=1',
        ],
                         msg="expected warnings after processing examples %s" %
                         (warnings))

        reset_warnings()
    def test_make_new_header_mem_limits(self, mock_cluster_overhead, mock_clusterdata):
        reset_warnings()
        sf = SubmitFilter(
            [],
            [x + "\n" for x in SCRIPTS[4].split("\n")]  # requesting mem example
        )

        mock_clusterdata.return_value = {
            'TOTMEM': 4 << 30,
            'PHYSMEM': 1024 << 20,
            'NP': 8,
            'NP_LCD': 2,
        }
        mock_cluster_overhead.return_value = 0

        sf.parse_header()
        header = submitfilter.make_new_header(sf)

        # header should not change
        self.assertEqual(header, [
            '#!/bin/bash',
            '#PBS -l nodes=1:ppn=4',
            '#PBS -l mem=4g',
            '#PBS -m n'
            '',
            '',
        ], msg='header with existing mem set')
        self.assertEqual(get_warnings(), [
            "Unable to determine clustername, using default delcatty (no PBS_DEFAULT)",
            "Warning, requested %sb mem per node, this is more than the available mem (%sb), this job will never start." % (4 << 30, 1024 << 20 )
        ])
 def setUp(self):
     reset_warnings()
     for env in ['PBS_DEFAULT', 'PBS_DPREFIX',
                 submitfilter.ENV_NODE_PARTITION, submitfilter.ENV_RESERVATION]:
         if env in os.environ:
             del os.environ[env]
     super(TestSubmitfilter, self).setUp()
Example #5
0
    def setUp(self):
        reset_warnings()
        for env in ['PBS_DEFAULT', 'PBS_DPREFIX', 'VSC_NODE_PARTITION']:
            if env in os.environ:
                del os.environ[env]

        # Add gengar cluster for testing purposes
        CLUSTERDATA['gengar'] = {
            'PHYSMEM': 16439292 << 10,
            'TOTMEM': 37410804 << 10,
            'NP': 8,
            'NP_LCD': 2,
        }

        super(TestSubmitfilter, self).setUp()
Example #6
0
    def setUp(self):
        reset_warnings()
        for env in ['PBS_DEFAULT', 'PBS_DPREFIX', 'VSC_NODE_PARTITION']:
            if env in os.environ:
                del os.environ[env]

        # Add gengar cluster for testing purposes
        CLUSTERDATA['gengar'] = {
            'PHYSMEM': 16439292 << 10,
            'TOTMEM': 37410804 << 10,
            'NP': 8,
            'NP_LCD': 2,
        }

        super(TestSubmitfilter, self).setUp()
Example #7
0
    def test_nodesfilter(self):
        """Test parse_resources_nodes"""
        for testdata in RESOURCE_NODES:
            orig = testdata.pop('orig')
            resources = {}
            nodes = parse_resources_nodes(orig, 'gengar', resources)
            self.assertEqual('nodes=' + resources['nodes'], nodes,
                             msg='nodes returned is equal to nodes=resources[nodes] (nodes=%s == %s)' % (resources['nodes'], nodes))
            self.assertEqual(resources, testdata, msg='generated resources equal to expected (expected %s generated %s; orig %s)' %
                             (testdata, resources, orig))

        # up to now, 2 warnings
        warnings = get_warnings()
        self.assertEqual(warnings,
                         ['Warning: unknown ppn (whatever) detected, using ppn=1',
                          'Warning: unknown ppn (woohoo) detected, using ppn=1',
                         ], msg="expected warnings after processing examples %s" % (warnings))

        reset_warnings()
Example #8
0
    def test_make_new_header_warn(self):
        """
        Test make_new_header warnings
            ideal ppn
            vmem too high
        """
        reset_warnings()

        sf = SubmitFilter(
            [],
            [x + "\n" for x in SCRIPTS[3].split("\n")]
        )
        sf.parse_header()

        header = submitfilter.make_new_header(sf)
        self.assertEqual(header, sf.header, msg='unmodified header')
        self.assertEqual(get_warnings(), [
            'The chosen ppn 4 is not considered ideal: should use either lower than or multiple of 3',
            'Warning, requested 1099511627776b vmem per node, this is more than the available vmem (86142287872b), this job will never start.',
        ], msg='warnings for ideal ppn and vmem too high')
    def test_make_new_header_warn(self):
        """
        Test make_new_header warnings
            ideal ppn
            vmem too high
        """
        reset_warnings()

        sf = SubmitFilter(
            [],
            [x + "\n" for x in SCRIPTS[3].split("\n")]
        )
        sf.parse_header()

        header = submitfilter.make_new_header(sf)
        self.assertEqual(header, sf.header, msg='unmodified header')
        self.assertEqual(get_warnings(), [
            'The chosen ppn 4 is not considered ideal: should use either lower than or multiple of 3',
            'Warning, requested 1099511627776b vmem per node, this is more than the available vmem (86142287872b), this job will never start.',
        ], msg='warnings for ideal ppn and vmem too high')
Example #10
0
 def setUp(self):
     reset_warnings()
     for env in ['PBS_DEFAULT', 'PBS_DPREFIX', 'VSC_NODE_PARTITION']:
         if env in os.environ:
             del os.environ[env]
     super(TestSubmitfilter, self).setUp()
Example #11
0
 def setUp(self):
     reset_warnings()
     for env in ["PBS_DEFAULT", "PBS_DPREFIX", "VSC_NODE_PARTITION"]:
         if env in os.environ:
             del os.environ[env]
     super(TestSubmitfilter, self).setUp()