Ejemplo n.º 1
0
        def _check_add(ign):
            furl1,servicedir1a = cli.add_service(serverdir,
                                                 "upload-file", (incomingdir,),
                                                 None)
            self.failUnless(os.path.isdir(servicedir1a))
            asd1 = os.path.abspath(servicedir1a)
            self.failUnless(asd1.startswith(os.path.abspath(basedir)))
            swiss1 = furl1[furl1.rfind("/")+1:]
            data = server.load_service_data(serverdir)
            servicedir1b = os.path.join(serverdir,
                                        data["services"][swiss1]["relative_basedir"])
            self.failUnlessEqual(os.path.abspath(servicedir1a),
                                 os.path.abspath(servicedir1b))

            # add a second service, to make sure the "find the next-highest
            # available servicedir" logic works from both empty and non-empty
            # starting points
            furl2,servicedir2a = cli.add_service(serverdir,
                                                 "run-command", ("dummy",),
                                                 None)
            self.failUnless(os.path.isdir(servicedir2a))
            asd2 = os.path.abspath(servicedir2a)
            self.failUnless(asd2.startswith(os.path.abspath(basedir)))
            swiss2 = furl2[furl2.rfind("/")+1:]
            data = server.load_service_data(serverdir)
            servicedir2b = os.path.join(serverdir,
                                        data["services"][swiss2]["relative_basedir"])
            self.failUnlessEqual(os.path.abspath(servicedir2a),
                                 os.path.abspath(servicedir2b))
Ejemplo n.º 2
0
    def test_parse_files_and_upgrade(self):
        # create a structure with individual files, and make sure we parse it
        # correctly. Test the git-foolscap case with slashes in the swissnum.
        basedir = "appserver/ServiceData/parse_files"
        os.makedirs(basedir)
        J = os.path.join

        f = open(os.path.join(basedir, "furl_prefix"), "wb")
        f.write(b"prefix")
        f.close()

        old_add_service(basedir, "type1", ("args1a", "args1b"), None, "swiss1")
        old_add_service(basedir, "type2", ("args2a", "args2b"), "comment2",
                        "swiss2")
        old_add_service(basedir, "type3", ("args3a", "args3b"), "comment3",
                        "swiss3/3")

        data = server.load_service_data(basedir)
        expected = {
            "version": 1,
            "services": {
                "swiss1": {
                    "relative_basedir": J("services", "swiss1"),
                    "type": "type1",
                    "args": ["args1a", "args1b"],
                    "comment": None,
                },
                "swiss2": {
                    "relative_basedir": J("services", "swiss2"),
                    "type": "type2",
                    "args": ["args2a", "args2b"],
                    "comment": "comment2",
                },
                J("swiss3", "3"): {
                    "relative_basedir": J("services", "swiss3", "3"),
                    "type": "type3",
                    "args": ["args3a", "args3b"],
                    "comment": "comment3",
                },
            }
        }
        self.assertEqual(data, expected)

        s4 = {
            "relative_basedir": J("services", "4"),
            "type": "type4",
            "args": ["args4a", "args4b"],
            "comment": "comment4",
        }
        data["services"]["swiss4"] = s4
        server.save_service_data(basedir, data)  # this upgrades to JSON
        data2 = server.load_service_data(basedir)  # reads JSON, not files
        expected["services"]["swiss4"] = s4
        self.assertEqual(data2, expected)
Ejemplo n.º 3
0
    def test_parse_files_and_upgrade(self):
        # create a structure with individual files, and make sure we parse it
        # correctly. Test the git-foolscap case with slashes in the swissnum.
        basedir = "appserver/ServiceData/parse_files"
        os.makedirs(basedir)
        J = os.path.join

        f = open(os.path.join(basedir, "furl_prefix"), "wb")
        f.write("prefix")
        f.close()

        old_add_service(basedir,
                        "type1", ("args1a", "args1b"), None, "swiss1")
        old_add_service(basedir,
                        "type2", ("args2a", "args2b"), "comment2", "swiss2")
        old_add_service(basedir,
                        "type3", ("args3a", "args3b"), "comment3", "swiss3/3")

        data = server.load_service_data(basedir)
        expected = {"version": 1,
                    "services": {
                        "swiss1": {"relative_basedir": J("services","swiss1"),
                                   "type": "type1",
                                   "args": ["args1a", "args1b"],
                                   "comment": None,
                                   },
                        "swiss2": {"relative_basedir": J("services","swiss2"),
                                   "type": "type2",
                                   "args": ["args2a", "args2b"],
                                   "comment": "comment2",
                                   },
                        J("swiss3","3"): {"relative_basedir":
                                        J("services","swiss3","3"),
                                        "type": "type3",
                                        "args": ["args3a", "args3b"],
                                        "comment": "comment3",
                                        },
                        }}
        self.failUnlessEqual(data, expected)

        s4 = {"relative_basedir": J("services","4"),
              "type": "type4",
              "args": ["args4a", "args4b"],
              "comment": "comment4",
              }
        data["services"]["swiss4"] = s4
        server.save_service_data(basedir, data) # this upgrades to JSON
        data2 = server.load_service_data(basedir) # reads JSON, not files
        expected["services"]["swiss4"] = s4
        self.failUnlessEqual(data2, expected)
Ejemplo n.º 4
0
def add_service(basedir, service_type, service_args, comment, swissnum=None):
    if not swissnum:
        swissnum = make_swissnum()
    services_data = load_service_data(basedir)
    relative_service_basedir = find_next_service_basedir(basedir)
    service_basedir = os.path.join(basedir, relative_service_basedir)
    os.makedirs(service_basedir)
    try:
        # validate the service args by instantiating one
        s = build_service(service_basedir, None, service_type, service_args)
        del s
    except:
        shutil.rmtree(service_basedir)
        raise

    services_data["services"][swissnum] = {
        "relative_basedir": relative_service_basedir,
        "type": service_type,
        "args": service_args,
        "comment": comment,
        }
    save_service_data(basedir, services_data)

    furl_prefix = open(os.path.join(basedir, "furl_prefix")).read().strip()
    furl = furl_prefix + swissnum
    return furl, service_basedir
Ejemplo n.º 5
0
    def test_save(self):
        basedir = "appserver/ServiceData/save"
        os.makedirs(basedir)
        server.save_service_data(basedir, orig_service_data)

        data = server.load_service_data(basedir)
        self.failUnlessEqual(orig_service_data, data)
Ejemplo n.º 6
0
def add_service(basedir, service_type, service_args, comment, swissnum=None):
    if not swissnum:
        swissnum = make_swissnum()
    services_data = load_service_data(basedir)
    relative_service_basedir = find_next_service_basedir(basedir)
    service_basedir = os.path.join(basedir, relative_service_basedir)
    os.makedirs(service_basedir)
    try:
        # validate the service args by instantiating one
        s = build_service(service_basedir, None, service_type, service_args)
        del s
    except:
        shutil.rmtree(service_basedir)
        raise

    services_data["services"][swissnum] = {
        "relative_basedir": relative_service_basedir,
        "type": service_type,
        "args": service_args,
        "comment": comment,
    }
    save_service_data(basedir, services_data)

    furl_prefix = open(os.path.join(basedir, "furl_prefix")).read().strip()
    furl = furl_prefix + swissnum
    return furl, service_basedir
Ejemplo n.º 7
0
 def test_parse_json(self):
     basedir = "appserver/ServiceData/parse_json"
     os.makedirs(basedir)
     f = open(os.path.join(basedir, "services.json"), "wb")
     json.dump(orig_service_data, f)
     f.close()
     data = server.load_service_data(basedir)
     self.failUnlessEqual(orig_service_data, data)
Ejemplo n.º 8
0
    def test_parse_json(self):
        basedir = "appserver/ServiceData/parse_json"
        os.makedirs(basedir)

        with open(os.path.join(basedir, "services.json"), "w") as f:
            json.dump(orig_service_data, f)

        data = server.load_service_data(basedir)
        self.assertEqual(orig_service_data, data)
Ejemplo n.º 9
0
def list_services(basedir):
    furl_prefix = open(os.path.join(basedir, "furl_prefix")).read().strip()
    services_data = load_service_data(basedir)["services"]
    services = []
    for swissnum, data in sorted(services_data.items()):
        s = FlappService()
        s.swissnum = swissnum
        s.service_basedir = os.path.join(basedir, data["relative_basedir"])
        s.service_type = data["type"]
        s.service_args = data["args"]
        s.comment = data["comment"] # maybe None
        s.furl = furl_prefix + swissnum
        services.append(s)
    return services
Ejemplo n.º 10
0
 def _check_add((rc,out,err)):
     self.failUnlessEqual(rc, 0)
     lines = out.splitlines()
     self.failUnless(lines[0].startswith("Service added in "))
     servicedir = lines[0].split()[-1]
     self.failUnless(lines[1].startswith("FURL is pb://"))
     furl = lines[1].split()[-1]
     swiss = furl[furl.rfind("/")+1:]
     data = server.load_service_data(serverdir)
     servicedir2 = os.path.join(serverdir,
                                data["services"][swiss]["relative_basedir"])
     self.failUnlessEqual(os.path.abspath(servicedir),
                          os.path.abspath(servicedir2))
     self.failUnlessEqual(data["services"][swiss]["comment"], None)
Ejemplo n.º 11
0
def list_services(basedir):
    furl_prefix = open(os.path.join(basedir, "furl_prefix")).read().strip()
    services_data = load_service_data(basedir)["services"]
    services = []
    for swissnum, data in sorted(services_data.items()):
        s = FlappService()
        s.swissnum = swissnum
        s.service_basedir = os.path.join(basedir, data["relative_basedir"])
        s.service_type = data["type"]
        s.service_args = data["args"]
        s.comment = data["comment"]  # maybe None
        s.furl = furl_prefix + swissnum
        services.append(s)
    return services
Ejemplo n.º 12
0
 def _check_add(xxx_todo_changeme8):
     (rc, out, err) = xxx_todo_changeme8
     self.assertEqual(rc, 0)
     lines = out.splitlines()
     self.assertTrue(lines[0].startswith("Service added in "))
     servicedir = lines[0].split()[-1]
     self.assertTrue(lines[1].startswith("FURL is pb://"))
     furl = lines[1].split()[-1]
     swiss = furl[furl.rfind("/") + 1:]
     data = server.load_service_data(serverdir)
     servicedir2 = os.path.join(
         serverdir, data["services"][swiss]["relative_basedir"])
     self.assertEqual(os.path.abspath(servicedir),
                      os.path.abspath(servicedir2))
     self.assertEqual(data["services"][swiss]["comment"],
                      "commentary here")