func startAPIService(t *testing.T, ctx *testutils.RktRunCtx) *gexpect.ExpectSubprocess { noUidGid := false gid, err := common.LookupGid(common.RktGroup) if err != nil { t.Logf("no %q group, will run api service with root, ONLY DO THIS FOR TESTING!", common.RktGroup) noUidGid = true } else { if err := ctx.SetupDataDir(); err != nil { t.Fatalf("failed to setup data directory: %v", err) } } u, err := user.Lookup("nobody") if err != nil { t.Logf(`no "nobody" user, will run api service with root, ONLY DO THIS FOR TESTING!`) noUidGid = true } uid, err := strconv.Atoi(u.Uid) if err != nil { t.Fatalf(`failed to parse "nobody" UID: %v`, err) } t.Logf("Running rkt api service") apisvcCmd := fmt.Sprintf("%s api-service", ctx.Cmd()) if noUidGid { return startRktAndCheckOutput(t, apisvcCmd, "API service running") } return startRktAsUidGidAndCheckOutput(t, apisvcCmd, "API service running", false, uid, gid) }