File: Glacier2Util.py

package info (click to toggle)
zeroc-ice 3.7.10-3.1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 75,696 kB
  • sloc: cpp: 356,894; java: 226,081; cs: 98,312; javascript: 35,027; python: 28,716; objc: 27,050; php: 7,526; ruby: 7,190; yacc: 2,949; ansic: 2,469; xml: 1,589; lex: 1,241; makefile: 472; sh: 52
file content (63 lines) | stat: -rw-r--r-- 2,789 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#
# Copyright (c) ZeroC, Inc. All rights reserved.
#

import sys, os
from Util import *

class Glacier2Router(ProcessFromBinDir, ProcessIsReleaseOnly, Server):

    def __init__(self, portnum=50, passwords={"userid": "abc123"}, *args, **kargs):
        Server.__init__(self, "glacier2router", mapping=Mapping.getByName("cpp"), desc="Glacier2 router",
                        readyCount=2, *args, **kargs)
        self.portnum = portnum
        self.passwords = passwords

    def getExe(self, current):
        return self.exe + "_32" if current.config.buildPlatform == "ppc" else self.exe

    def setup(self, current):
        if self.passwords:
            path = os.path.join(current.testsuite.getPath(), "passwords")
            with open(path, "w") as file:
                command = "\"%s\" %s" % (sys.executable,
                                     os.path.abspath(os.path.join(toplevel, "scripts", "icehashpassword.py")))

                #
                # For Linux ARM default rounds makes test slower (Usually runs on embedded boards)
                #
                if current.config.buildPlatform.find("arm") >= 0:
                    command += " --rounds 100000"

                for user, password in self.passwords.items():
                    file.write("%s %s\n" % (user, run(command, stdin=(password + '\r\n').encode('UTF-8'))))
            current.files.append(path)

    def getProps(self, current):
        props = Server.getProps(self, current)
        props.update({
            "Glacier2.Client.Endpoints" : current.getTestEndpoint(self.portnum),
            "Glacier2.Server.Endpoints" : "tcp",
            "Ice.Admin.Endpoints" : current.getTestEndpoint(self.portnum + 1),
            "Ice.Admin.InstanceName" : "Glacier2",
        })
        if self.passwords:
            props["Glacier2.CryptPasswords"] = os.path.join(current.testsuite.getPath(), "passwords")
        if isinstance(current.testcase.getTestSuite(), Glacier2TestSuite):
            # Add the properties provided by the Glacier2TestSuite routerProps parameter.
            props.update(current.testcase.getTestSuite().getRouterProps(self, current))
        return props

    def getClientProxy(self, current):
        return "Glacier2/router:{0}".format(current.getTestEndpoint(self.portnum))

class Glacier2TestSuite(TestSuite):

    def __init__(self, path, routerProps={}, testcases=None, *args, **kargs):
        if testcases is None:
            testcases = [ClientServerTestCase(servers=[Glacier2Router(), Server()])]
        TestSuite.__init__(self, path, testcases, *args, **kargs)
        self.routerProps = routerProps

    def getRouterProps(self, process, current):
        return self.routerProps(process, current) if callable(self.routerProps) else self.routerProps.copy()