From 9c0ac96b7ed0462b76122326383a4d79ee86e8ac Mon Sep 17 00:00:00 2001 From: "adam.richards" Date: Mon, 21 Jun 2021 13:57:58 -0600 Subject: [PATCH 1/6] fix sonarqube findings --- clients/gitlab/client.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/clients/gitlab/client.go b/clients/gitlab/client.go index 94827ff..48c5c19 100644 --- a/clients/gitlab/client.go +++ b/clients/gitlab/client.go @@ -160,7 +160,7 @@ func (r Client) DeleteUser(userID int) (int, error) { // DeleteUserByUsername - convenience method func (r Client) DeleteUserByUsername(username string) (int, error) { // expect return status code of http.StatusNoContent 204 or http.StatusNotFound 404 - + logPrefix := "Completed call to DeleteUserByUsername." var opts = gogitlab.ListUsersOptions{Username: &username} users, lres, err := r.client.Users.ListUsers(&opts) if err != nil { @@ -168,15 +168,15 @@ func (r Client) DeleteUserByUsername(username string) (int, error) { } if len(users) == 0 { statusCode := http.StatusNotFound - rlog.Debug(fmt.Sprintf("Completed call to DeleteUser. Status Code: %d", statusCode)) + rlog.Debug(fmt.Sprintf("%s User Not Found. Status Code: %d", logPrefix, statusCode)) return statusCode, nil } - + res, err := r.client.Users.DeleteUser(users[0].ID) if err != nil { return res.StatusCode, err } - rlog.Debug(fmt.Sprintf("Completed call to DeleteUser. Status Code: %d", res.StatusCode)) + rlog.Debug(fmt.Sprintf("%s Status Code: %d", logPrefix, res.StatusCode)) return res.StatusCode, nil } -- GitLab From 7afa512c5b2d794f1a78426bff336ba9eb0936c5 Mon Sep 17 00:00:00 2001 From: "adam.richards" Date: Mon, 21 Jun 2021 15:44:43 -0600 Subject: [PATCH 2/6] add wait to delete group in order to insure resouce has been deleted before returning --- clients/gitlab/client.go | 95 +++++++++++++++++-- .../gitlab/api/gitlab_api_adhoc_test.go | 49 +++++----- rlog.conf | 2 +- 3 files changed, 117 insertions(+), 29 deletions(-) diff --git a/clients/gitlab/client.go b/clients/gitlab/client.go index 48c5c19..5103208 100644 --- a/clients/gitlab/client.go +++ b/clients/gitlab/client.go @@ -37,9 +37,11 @@ package gitlab import ( "fmt" + "net/http" + "time" + "github.com/romana/rlog" gogitlab "github.com/xanzy/go-gitlab" - "net/http" ) const itemsPerPage = 50 @@ -83,7 +85,7 @@ func (r Client) GetUser(userID int) (*gogitlab.User, int, error) { return nil, 0, err } - rlog.Debug(fmt.Sprintf("Completed call to GetUser userID: %d", user.ID)) + rlog.Debugf("Completed call to GetUser userID: %d", user.ID) return user, res.StatusCode, nil } @@ -191,6 +193,56 @@ func (r Client) GetGroup(groupID int) (*gogitlab.Group, int, error) { return group, res.StatusCode, nil } +// GetGroupByFullPath - +func (r Client) GetGroupByFullPath(fullPath *string) (*gogitlab.Group, int, error) { + // slow. get all groups and check for exact match to fullPath + listOptions := gogitlab.ListOptions{ + Page: 1, + PerPage: itemsPerPage, + } + + // some valid values path, name + logPrefix := "Completed call to GetGroupByFullPath." + orderBy := "path" + opts := gogitlab.ListGroupsOptions{ + ListOptions: listOptions, + OrderBy: &orderBy, + } + + group := &gogitlab.Group{} + var more = true + var found = false + + // while more and not found + for more && !found { + groups, res, err := r.client.Groups.ListGroups(&opts) + if err != nil { + return nil, 0, err + } + for x := 0; x < len(groups) && !found; x++ { + rlog.Debugf(">>>>>>>> group %s", groups[x].FullPath) + if groups[x].FullPath == *fullPath { + found = true + rlog.Debugf(">>>>>>>> FOUND group %s", groups[x].FullPath) + group = groups[x] + } + } + + if res.NextPage > 0 { + opts.ListOptions.Page = opts.ListOptions.Page + 1 + } else { + more = false + } + + } + if !found { + rlog.Debug(fmt.Sprintf("%s NOT FOUND %s", logPrefix, *fullPath)) + return nil, http.StatusNotFound, nil + } + rlog.Debug(fmt.Sprintf("%s FOUND %s", logPrefix, group.FullPath)) + return group, http.StatusFound, nil +} + // GetGroups - func (r Client) GetGroups(search *string) ([]*gogitlab.Group, error) { listOptions := gogitlab.ListOptions{ @@ -253,11 +305,33 @@ func (r Client) AddGroup(group *gogitlab.Group, parentID *int) (*gogitlab.Group, } // DeleteGroup - -func (r Client) DeleteGroup(groupID int) (int, error) { +func (r Client) DeleteGroup(groupID int, wait bool) (int, error) { + // recommended to use wait = true + // setting wait will use a loop to wait until resource has completed deletion res, err := r.client.Groups.DeleteGroup(groupID) if err != nil { - return res.StatusCode, err + return 0, err + } + rlog.Debugf("DeleteGroup status: %d", res.StatusCode) + // wait for resource to be deleted + if wait { + gone := false + retryCount := 50 + for !gone && retryCount >= 0 { + _, res, err = r.client.Groups.GetGroup(groupID) + if err != nil && res == nil { + rlog.Debugf("DeleteGroup hard error: %v", err) + return 0, err + } + if res.StatusCode == http.StatusNotFound { + gone = true + } + retryCount = retryCount -1 + rlog.Debugf("DeleteGroup wait status: %d", res.StatusCode) + time.Sleep((10 * time.Millisecond)) + } } + rlog.Debugf("Completed call to DeleteGroup status: %d", res.StatusCode) return res.StatusCode, nil } @@ -269,7 +343,7 @@ func (r Client) GetProject(projectID int) (*gogitlab.Project, error) { return nil, err } - rlog.Debug(fmt.Sprintf("Completed call to GetProject. status Code: %d", res.StatusCode)) + rlog.Debugf("Completed call to GetProject. status Code: %d", res.StatusCode) return project, nil } @@ -309,7 +383,7 @@ func (r Client) GetProjects(search *string) ([]*gogitlab.Project, error) { more = false } } - rlog.Debug(fmt.Sprintf("Completed call to GetProjectss. Records returned: %d", len(projectList))) + rlog.Debugf("Completed call to GetProjectss. Records returned: %d", len(projectList)) return projectList, nil } @@ -333,3 +407,12 @@ func (r Client) AddProject(project *gogitlab.Project, groupID int) (*gogitlab.Pr } return newProject, res.StatusCode, nil } + +// DeleteProject - +func (r Client) DeleteProject(projectID int) (int, error) { + res, err := r.client.Projects.DeleteProject(projectID) + if err != nil { + return res.StatusCode, err + } + return res.StatusCode, nil +} diff --git a/integration-tests/gitlab/api/gitlab_api_adhoc_test.go b/integration-tests/gitlab/api/gitlab_api_adhoc_test.go index 0f27134..57f3cc3 100644 --- a/integration-tests/gitlab/api/gitlab_api_adhoc_test.go +++ b/integration-tests/gitlab/api/gitlab_api_adhoc_test.go @@ -3,15 +3,19 @@ package integration import ( - "testing" "errors" + "net/http" "os" + "testing" + + gitlab "valkyrie.dso.mil/valkyrie-api/clients/gitlab" + "github.com/romana/rlog" gogitlab "github.com/xanzy/go-gitlab" ) -// getClient_AdHoc - +// getClient_AdHoc - func getClient_AdHoc() (gitlab.Client, error) { gitlabAPIURL, ok := os.LookupEnv("GITLAB_API_URL") if !ok { @@ -21,7 +25,7 @@ func getClient_AdHoc() (gitlab.Client, error) { if !ok { return gitlab.Client{}, errors.New("env variable GITLAB_API_TOKEN undefinded") } - var client = gitlab.NewClient(gitlabAPIURL, gitlabAPIToken,nil) + var client = gitlab.NewClient(gitlabAPIURL, gitlabAPIToken, nil) return client, nil } func TestClient_AdHoc_getUsers_All(t *testing.T) { @@ -37,7 +41,7 @@ func TestClient_AdHoc_getUsers_All(t *testing.T) { return } t.Logf("GetUsers %d", len(got)) - for x:=0;x>>>>>>> delete group %d", statusCode) + + } - groupName := "adam root" - groupPath := "adam-root" groupObj := gogitlab.Group{Name: groupName, Path: groupPath} - group, statusCode, err := c.AddGroup(&groupObj, nil) + group, statusCode, err = c.AddGroup(&groupObj, nil) if err != nil { t.Errorf("AddGroup error = %v", err) return @@ -173,12 +180,10 @@ func TestClient_AdHoc_addGroups_SubGroup(t *testing.T) { return } t.Logf("AddGroup: %s %d", subgroup.FullPath, statusCode) - } }) } - func TestClient_AdHoc_getProjects_ALL(t *testing.T) { t.Run("test", func(t *testing.T) { c, err := getClient_AdHoc() @@ -192,7 +197,7 @@ func TestClient_AdHoc_getProjects_ALL(t *testing.T) { return } t.Logf("GetProjects %d", len(got)) - for x:=0;x Date: Mon, 21 Jun 2021 17:31:19 -0600 Subject: [PATCH 3/6] add wait for delete user and delete group --- clients/gitlab/client.go | 61 +++++++++++++------ clients/gitlab/client_test.go | 8 +-- .../gitlab/api/gitlab_api_adhoc_test.go | 49 ++++++++++++--- 3 files changed, 87 insertions(+), 31 deletions(-) diff --git a/clients/gitlab/client.go b/clients/gitlab/client.go index 5103208..620bf0a 100644 --- a/clients/gitlab/client.go +++ b/clients/gitlab/client.go @@ -150,17 +150,40 @@ func (r Client) AddUser(user *gogitlab.User, password string) (*gogitlab.User, i } // DeleteUser - -func (r Client) DeleteUser(userID int) (int, error) { +func (r Client) DeleteUser(userID int, waitInterval int, waitCount int) (int, error) { + // waiting will be skilled if waitCount is 0 + // setting wait will use a loop to wait until resource has completed deletion res, err := r.client.Users.DeleteUser(userID) if err != nil { return res.StatusCode, err } - rlog.Debug(fmt.Sprintf("Completed call to DeleteUser. Status Code: %d", res.StatusCode)) + rlog.Debugf("DeleteUser status: %d", res.StatusCode) + // wait for resource to be deleted + if waitCount > 0 { + done := false + retryCount := waitCount + for !done && retryCount > 0 { + _, res, err = r.client.Groups.GetGroup(userID) + if err != nil && res == nil { + rlog.Warnf("DeleteUser hard error: %v", err) + return 0, err + } + if res.StatusCode == http.StatusNotFound { + done = true + } + retryCount = retryCount - 1 + rlog.Debugf("DeleteUser wait status: %d", res.StatusCode) + time.Sleep((time.Duration(waitInterval) * time.Millisecond)) + } + } + rlog.Debugf("Completed call to DeleteUser status: %d", res.StatusCode) return res.StatusCode, nil } // DeleteUserByUsername - convenience method -func (r Client) DeleteUserByUsername(username string) (int, error) { +func (r Client) DeleteUserByUsername(username string, waitInterval int, waitCount int) (int, error) { + // waiting will be skilled if waitCount is 0 + // setting wait will use a loop to wait until resource has completed deletion // expect return status code of http.StatusNoContent 204 or http.StatusNotFound 404 logPrefix := "Completed call to DeleteUserByUsername." var opts = gogitlab.ListUsersOptions{Username: &username} @@ -174,12 +197,12 @@ func (r Client) DeleteUserByUsername(username string) (int, error) { return statusCode, nil } - res, err := r.client.Users.DeleteUser(users[0].ID) + statusCode, err := r.DeleteUser(users[0].ID, waitInterval, waitCount) if err != nil { - return res.StatusCode, err + return 0, err } - rlog.Debug(fmt.Sprintf("%s Status Code: %d", logPrefix, res.StatusCode)) - return res.StatusCode, nil + rlog.Debug(fmt.Sprintf("%s Status Code: %d", logPrefix, statusCode)) + return statusCode, nil } // GetGroup - @@ -220,10 +243,10 @@ func (r Client) GetGroupByFullPath(fullPath *string) (*gogitlab.Group, int, erro return nil, 0, err } for x := 0; x < len(groups) && !found; x++ { - rlog.Debugf(">>>>>>>> group %s", groups[x].FullPath) + rlog.Debugf("GetGroupByFullPath checking group %s", groups[x].FullPath) if groups[x].FullPath == *fullPath { found = true - rlog.Debugf(">>>>>>>> FOUND group %s", groups[x].FullPath) + rlog.Debugf("GetGroupByFullPath FOUND group %s", groups[x].FullPath) group = groups[x] } } @@ -305,8 +328,8 @@ func (r Client) AddGroup(group *gogitlab.Group, parentID *int) (*gogitlab.Group, } // DeleteGroup - -func (r Client) DeleteGroup(groupID int, wait bool) (int, error) { - // recommended to use wait = true +func (r Client) DeleteGroup(groupID int, waitInterval int, waitCount int) (int, error) { + // waiting will be skilled if waitCount is 0 // setting wait will use a loop to wait until resource has completed deletion res, err := r.client.Groups.DeleteGroup(groupID) if err != nil { @@ -314,21 +337,21 @@ func (r Client) DeleteGroup(groupID int, wait bool) (int, error) { } rlog.Debugf("DeleteGroup status: %d", res.StatusCode) // wait for resource to be deleted - if wait { - gone := false - retryCount := 50 - for !gone && retryCount >= 0 { + if waitCount > 0 { + done := false + retryCount := waitCount + for !done && retryCount > 0 { _, res, err = r.client.Groups.GetGroup(groupID) if err != nil && res == nil { - rlog.Debugf("DeleteGroup hard error: %v", err) + rlog.Warnf("DeleteGroup hard error: %v", err) return 0, err } if res.StatusCode == http.StatusNotFound { - gone = true + done = true } - retryCount = retryCount -1 + retryCount = retryCount - 1 rlog.Debugf("DeleteGroup wait status: %d", res.StatusCode) - time.Sleep((10 * time.Millisecond)) + time.Sleep((time.Duration(waitInterval) * time.Millisecond)) } } rlog.Debugf("Completed call to DeleteGroup status: %d", res.StatusCode) diff --git a/clients/gitlab/client_test.go b/clients/gitlab/client_test.go index 5927ed3..9e890b6 100644 --- a/clients/gitlab/client_test.go +++ b/clients/gitlab/client_test.go @@ -282,8 +282,6 @@ func TestClient_DeleteUser(t *testing.T) { testUserID := 1 testUsername := "testusername" testUser := gogitlab.User{ID: testUserID, Username: testUsername} - testUserArray := []*gogitlab.User{} - testUserArray = append(testUserArray, &testUser) httpmock.RegisterResponder("DELETE", `=~^https://test/api/v4/users.*`, @@ -326,7 +324,7 @@ func TestClient_DeleteUser(t *testing.T) { token: tt.fields.token, apiURL: tt.fields.apiURL, } - got, err := r.DeleteUser(tt.args.userID) + got, err := r.DeleteUser(tt.args.userID, 0, 0) if (err != nil) != tt.wantErr { t.Errorf("Client.DeleteUser() error = %v, wantErr %v", err, tt.wantErr) return @@ -396,7 +394,7 @@ func TestClient_DeleteUserByUsername(t *testing.T) { token: tt.fields.token, apiURL: tt.fields.apiURL, } - got, err := r.DeleteUserByUsername(tt.args.username) + got, err := r.DeleteUserByUsername(tt.args.username, 0, 0) if (err != nil) != tt.wantErr { t.Errorf("Client.DeleteUserByUsername() error = %v, wantErr %v", err, tt.wantErr) return @@ -678,7 +676,7 @@ func TestClient_DeleteGroup(t *testing.T) { token: tt.fields.token, apiURL: tt.fields.apiURL, } - got, err := r.DeleteGroup(tt.args.groupID) + got, err := r.DeleteGroup(tt.args.groupID, 0, 0) if (err != nil) != tt.wantErr { t.Errorf("Client.DeleteGroup() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/integration-tests/gitlab/api/gitlab_api_adhoc_test.go b/integration-tests/gitlab/api/gitlab_api_adhoc_test.go index 57f3cc3..f826ae0 100644 --- a/integration-tests/gitlab/api/gitlab_api_adhoc_test.go +++ b/integration-tests/gitlab/api/gitlab_api_adhoc_test.go @@ -4,11 +4,11 @@ package integration import ( "errors" + "fmt" "net/http" "os" "testing" - gitlab "valkyrie.dso.mil/valkyrie-api/clients/gitlab" "github.com/romana/rlog" @@ -93,7 +93,7 @@ func TestClient_AdHoc_deleteUser_None(t *testing.T) { return } username := "notfound" - statusCode, err := c.DeleteUserByUsername(username) + statusCode, err := c.DeleteUserByUsername(username, 1000, 20) if err != nil { t.Errorf("Client.DeleteUser() error = %v", err) return @@ -158,7 +158,8 @@ func TestClient_AdHoc_addGroups_SubGroup(t *testing.T) { if (err == nil) && (statusCode == http.StatusFound) { - statusCode, err = c.DeleteGroup(group.ID, true) + // delete and wait for resource to clear.. up to 120 seconds + statusCode, err = c.DeleteGroup(group.ID, 1000, 120) rlog.Debugf(">>>>>>>> delete group %d", statusCode) } @@ -171,16 +172,50 @@ func TestClient_AdHoc_addGroups_SubGroup(t *testing.T) { } t.Logf("AddGroup: %s %d", group.FullPath, statusCode) - groupName = "adam subgroup" - groupPath = "adam-subgroup" + groupName = "adam subgroup1" + groupPath = "adam-subgroup1" + groupObj = gogitlab.Group{Name: groupName, Path: groupPath} + subgroup1, statusCode, err := c.AddGroup(&groupObj, &group.ID) + if err != nil { + t.Errorf("AddGroup error = %v", err) + return + } + t.Logf("AddGroup: %s %d", subgroup1.FullPath, statusCode) + + groupName = "adam subgroup2" + groupPath = "adam-subgroup2" groupObj = gogitlab.Group{Name: groupName, Path: groupPath} - subgroup, statusCode, err := c.AddGroup(&groupObj, &group.ID) + subgroup2, statusCode, err := c.AddGroup(&groupObj, &group.ID) if err != nil { t.Errorf("AddGroup error = %v", err) return } - t.Logf("AddGroup: %s %d", subgroup.FullPath, statusCode) + t.Logf("AddGroup: %s %d", subgroup2.FullPath, statusCode) + for i := 1; i <= 250; i++ { + projectName := "test project " + fmt.Sprintf("%d", i) + + projectObj := gogitlab.Project{Name: projectName} + got, statusCode, err := c.AddProject(&projectObj, group.ID) + + if err != nil { + t.Errorf("Client.AddProject() error = %v %d", err, statusCode) + } else { + t.Logf("AddProject: [%s, %s, %d]", got.NameWithNamespace, got.HTTPURLToRepo, statusCode) + } + } + for i := 1; i <= 250; i++ { + projectName := "test project " + fmt.Sprintf("%d", i) + + projectObj := gogitlab.Project{Name: projectName} + got, statusCode, err := c.AddProject(&projectObj, subgroup1.ID) + + if err != nil { + t.Errorf("Client.AddProject() error = %v %d", err, statusCode) + } else { + t.Logf("AddProject: [%s, %s, %d]", got.NameWithNamespace, got.HTTPURLToRepo, statusCode) + } + } }) } -- GitLab From 15aa4645e41d829e27a93e0316f92193b06d9bcd Mon Sep 17 00:00:00 2001 From: "adam.richards" Date: Mon, 21 Jun 2021 18:48:04 -0600 Subject: [PATCH 4/6] update tests to wait for delte resources --- clients/gitlab/client.go | 6 +- clients/gitlab/client_test.go | 55 ++++++++++++++++--- .../gitlab/api/gitlab_api_adhoc_test.go | 10 ++-- .../gitlab/api/gitlab_api_test.go | 4 +- rlog.conf | 2 +- 5 files changed, 61 insertions(+), 16 deletions(-) diff --git a/clients/gitlab/client.go b/clients/gitlab/client.go index 620bf0a..4c73f70 100644 --- a/clients/gitlab/client.go +++ b/clients/gitlab/client.go @@ -162,8 +162,12 @@ func (r Client) DeleteUser(userID int, waitInterval int, waitCount int) (int, er if waitCount > 0 { done := false retryCount := waitCount + getCustomeAttributes := true + opts := gogitlab.GetUsersOptions{ + WithCustomAttributes: &getCustomeAttributes, + } for !done && retryCount > 0 { - _, res, err = r.client.Groups.GetGroup(userID) + _, res, err = r.client.Users.GetUser(userID, opts) if err != nil && res == nil { rlog.Warnf("DeleteUser hard error: %v", err) return 0, err diff --git a/clients/gitlab/client_test.go b/clients/gitlab/client_test.go index 9e890b6..d8b8bda 100644 --- a/clients/gitlab/client_test.go +++ b/clients/gitlab/client_test.go @@ -283,9 +283,29 @@ func TestClient_DeleteUser(t *testing.T) { testUsername := "testusername" testUser := gogitlab.User{ID: testUserID, Username: testUsername} + // httpmock.RegisterResponder("DELETE", + // `=~^https://test/api/v4/users.*`, + // httpmock.NewJsonResponderOrPanic(202, testUser), + // ) + + // mock to list out the articles + counter := 0 + httpmock.RegisterResponder("DELETE", `=~^https://test/api/v4/users.*`, - httpmock.NewJsonResponderOrPanic(202, testUser), + func(req *http.Request) (*http.Response, error) { + return httpmock.NewJsonResponse(201, testUser) + }, + ) + httpmock.RegisterResponder("GET", + `=~^https://test/api/v4/users.*`, + func(req *http.Request) (*http.Response, error) { + counter = counter + 1 + if counter%4 == 0 { + return httpmock.NewJsonResponse(404, testUser) + } + return httpmock.NewJsonResponse(202, testUser) + }, ) // test objects @@ -313,7 +333,7 @@ func TestClient_DeleteUser(t *testing.T) { name: "DeleteUser 1", fields: fields{client: testGitlabClient, token: testToken, apiURL: testAPIUrl}, args: args{userID: testUserID}, - want: 202, + want: 404, wantErr: false, }, } @@ -324,7 +344,7 @@ func TestClient_DeleteUser(t *testing.T) { token: tt.fields.token, apiURL: tt.fields.apiURL, } - got, err := r.DeleteUser(tt.args.userID, 0, 0) + got, err := r.DeleteUser(tt.args.userID, 1000, 10) if (err != nil) != tt.wantErr { t.Errorf("Client.DeleteUser() error = %v, wantErr %v", err, tt.wantErr) return @@ -630,13 +650,34 @@ func TestClient_DeleteGroup(t *testing.T) { testGroup2 := gogitlab.Group{ID: 2, Name: "group spongebob"} testGroupArray = append(testGroupArray, &testGroup1, &testGroup2) + // httpmock.RegisterResponder("DELETE", + // `=~^https://test/api/v4/groups.*`, + // httpmock.NewJsonResponderOrPanic(202, testGroup1), + // ) + // httpmock.RegisterResponder("GET", + // `=~^https://test/api/v4/groups.*`, + // httpmock.NewJsonResponderOrPanic(200, testGroupArray), + // ) +var counter = 0; httpmock.RegisterResponder("DELETE", `=~^https://test/api/v4/groups.*`, - httpmock.NewJsonResponderOrPanic(202, testGroup1), + func(req *http.Request) (*http.Response, error) { + // counter = counter + 1 + // if counter%4 == 0 { + // return httpmock.NewJsonResponse(404, testGroup1) + // } + return httpmock.NewJsonResponse(201, testGroup1) + }, ) httpmock.RegisterResponder("GET", `=~^https://test/api/v4/groups.*`, - httpmock.NewJsonResponderOrPanic(200, testGroupArray), + func(req *http.Request) (*http.Response, error) { + counter = counter + 1 + if counter%4 == 0 { + return httpmock.NewJsonResponse(404, testGroup1) + } + return httpmock.NewJsonResponse(202, testGroup1) + }, ) // test objects @@ -665,7 +706,7 @@ func TestClient_DeleteGroup(t *testing.T) { name: "DeleteGroup 1", fields: fields{client: testGitlabClient, token: testToken, apiURL: testAPIUrl}, args: args{groupID: testGroupID}, - want: 202, + want: 404, wantErr: false, }, } @@ -676,7 +717,7 @@ func TestClient_DeleteGroup(t *testing.T) { token: tt.fields.token, apiURL: tt.fields.apiURL, } - got, err := r.DeleteGroup(tt.args.groupID, 0, 0) + got, err := r.DeleteGroup(tt.args.groupID, 1000, 10) if (err != nil) != tt.wantErr { t.Errorf("Client.DeleteGroup() error = %v, wantErr %v", err, tt.wantErr) return diff --git a/integration-tests/gitlab/api/gitlab_api_adhoc_test.go b/integration-tests/gitlab/api/gitlab_api_adhoc_test.go index f826ae0..04cff12 100644 --- a/integration-tests/gitlab/api/gitlab_api_adhoc_test.go +++ b/integration-tests/gitlab/api/gitlab_api_adhoc_test.go @@ -93,7 +93,7 @@ func TestClient_AdHoc_deleteUser_None(t *testing.T) { return } username := "notfound" - statusCode, err := c.DeleteUserByUsername(username, 1000, 20) + statusCode, err := c.DeleteUserByUsername(username, 100, 200) if err != nil { t.Errorf("Client.DeleteUser() error = %v", err) return @@ -157,9 +157,9 @@ func TestClient_AdHoc_addGroups_SubGroup(t *testing.T) { group, statusCode, err := c.GetGroupByFullPath(&groupFullPath) if (err == nil) && (statusCode == http.StatusFound) { - + t.Logf("DeleteGroup %s. This can take minutes, set log level to DEBUG to see detailed progress.", groupFullPath) // delete and wait for resource to clear.. up to 120 seconds - statusCode, err = c.DeleteGroup(group.ID, 1000, 120) + statusCode, err = c.DeleteGroup(group.ID, 100, 1200) rlog.Debugf(">>>>>>>> delete group %d", statusCode) } @@ -192,7 +192,7 @@ func TestClient_AdHoc_addGroups_SubGroup(t *testing.T) { } t.Logf("AddGroup: %s %d", subgroup2.FullPath, statusCode) - for i := 1; i <= 250; i++ { + for i := 1; i <= 125; i++ { projectName := "test project " + fmt.Sprintf("%d", i) projectObj := gogitlab.Project{Name: projectName} @@ -204,7 +204,7 @@ func TestClient_AdHoc_addGroups_SubGroup(t *testing.T) { t.Logf("AddProject: [%s, %s, %d]", got.NameWithNamespace, got.HTTPURLToRepo, statusCode) } } - for i := 1; i <= 250; i++ { + for i := 1; i <= 125; i++ { projectName := "test project " + fmt.Sprintf("%d", i) projectObj := gogitlab.Project{Name: projectName} diff --git a/integration-tests/gitlab/api/gitlab_api_test.go b/integration-tests/gitlab/api/gitlab_api_test.go index a0a3cfd..9b0c6f1 100644 --- a/integration-tests/gitlab/api/gitlab_api_test.go +++ b/integration-tests/gitlab/api/gitlab_api_test.go @@ -96,7 +96,7 @@ func TestClient_deleteUsers(t *testing.T) { for i := 1; i <= testItemCount; i++ { username := "testuser" + fmt.Sprintf("%d", i) - statusCode, err := c.DeleteUserByUsername(username) + statusCode, err := c.DeleteUserByUsername(username, 100, 200) if err != nil { t.Errorf("Client.DeleteUser() error = %v %d", err, statusCode) @@ -178,7 +178,7 @@ func TestClient_deleteGroups(t *testing.T) { for x := 0; x < len(groupList); x++ { group := groupList[x] - statusCode, err := c.DeleteGroup(group.ID) + statusCode, err := c.DeleteGroup(group.ID, 100, 1200) if err != nil { t.Errorf("Client.DeleteGroup() error = %v %d", err, statusCode) diff --git a/rlog.conf b/rlog.conf index 23fd5be..d50c2ce 100644 --- a/rlog.conf +++ b/rlog.conf @@ -1,6 +1,6 @@ # Comment lines start with a '#' # export RLOG_CONF_FILE= -RLOG_LOG_LEVEL = DEBUG +RLOG_LOG_LEVEL = WARN RLOG_LOG_STREAM = stdout # time format - use ! to prevent override by environment variable RLOG_TIME_FORMAT="2006/01/06 15:04:05.00" -- GitLab From 5c49f6f2a9dbe913714360fd93d28fa3fa59aed3 Mon Sep 17 00:00:00 2001 From: "adam.richards" Date: Tue, 22 Jun 2021 18:26:08 -0600 Subject: [PATCH 5/6] format --- clients/gitlab/client_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clients/gitlab/client_test.go b/clients/gitlab/client_test.go index d8b8bda..4361ff2 100644 --- a/clients/gitlab/client_test.go +++ b/clients/gitlab/client_test.go @@ -290,7 +290,7 @@ func TestClient_DeleteUser(t *testing.T) { // mock to list out the articles counter := 0 - + httpmock.RegisterResponder("DELETE", `=~^https://test/api/v4/users.*`, func(req *http.Request) (*http.Response, error) { @@ -658,7 +658,7 @@ func TestClient_DeleteGroup(t *testing.T) { // `=~^https://test/api/v4/groups.*`, // httpmock.NewJsonResponderOrPanic(200, testGroupArray), // ) -var counter = 0; + var counter = 0 httpmock.RegisterResponder("DELETE", `=~^https://test/api/v4/groups.*`, func(req *http.Request) (*http.Response, error) { -- GitLab From 3183d4ceebd009dd3bd89f45bd4798ce8717d53b Mon Sep 17 00:00:00 2001 From: "adam.richards" Date: Tue, 22 Jun 2021 18:46:49 -0600 Subject: [PATCH 6/6] update docker image --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b3cd263..bedb426 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # NOTE: USING THIS IMAGE UNTIL registry1 credentials are added to IL2 runners # Build the manager binary -FROM registry.il2.dso.mil/platform-one/devops/pipeline-templates/pipeline-job/golang-builder-1.6:1.0 as builder +FROM registry.il2.dso.mil/platform-one/devops/pipeline-templates/valkyrie/golang-builder-1.6:1.0 as builder WORKDIR /workspace # Copy the Go Modules manifests -- GitLab