Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-pages.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaime Martinez <jmartinez@gitlab.com>2020-08-06 04:23:49 +0300
committerJaime Martinez <jmartinez@gitlab.com>2020-08-06 04:23:49 +0300
commitf1b46f98d343dc5b12928aaa79c39f0c7db8e3af (patch)
tree53210f593dcf59f9975b4f48a8738e9ecb14de74
parentb2922c74ae775f4a56c784572c6672fa2c7332fa (diff)
Revert "Merge branch 'revert-b3bf3ac4' into 'master'"revert-84c3866
This reverts commit 84c3866ba69e2ca0ca7d512b09ae66458f5c1c5c, reversing changes made to 185e0a0e5c621f350335495291c535e5c05df89b.
-rw-r--r--internal/source/domains.go17
-rw-r--r--internal/source/domains_test.go42
-rw-r--r--internal/source/gitlab/gitlab.go8
-rw-r--r--internal/source/gitlab/gitlab_poll.go1
-rw-r--r--internal/source/source.go1
-rw-r--r--internal/source/source_mock.go6
6 files changed, 46 insertions, 29 deletions
diff --git a/internal/source/domains.go b/internal/source/domains.go
index 77e1aa1d..ca2a8b6e 100644
--- a/internal/source/domains.go
+++ b/internal/source/domains.go
@@ -44,19 +44,22 @@ func NewDomains(config Config) (*Domains, error) {
// TODO: choose domain source config via config.DomainConfigSource()
// https://gitlab.com/gitlab-org/gitlab/-/issues/217912
+ domains := &Domains{
+ disk: disk.New(),
+ }
+
if len(config.InternalGitLabServerURL()) == 0 || len(config.GitlabAPISecret()) == 0 {
- return &Domains{disk: disk.New()}, nil
+ return domains, nil
}
- gitlab, err := gitlab.New(config)
+ glClient, err := gitlab.New(config)
if err != nil {
return nil, err
}
- return &Domains{
- gitlab: gitlab,
- disk: disk.New(),
- }, nil
+ domains.gitlab = glClient
+
+ return domains, nil
}
// GetDomain retrieves a domain information from a source. We are using two
@@ -85,7 +88,7 @@ func (d *Domains) IsReady() bool {
}
func (d *Domains) source(domain string) Source {
- if d.gitlab == nil {
+ if d.gitlab == nil || !d.gitlab.IsReady() {
return d.disk
}
diff --git a/internal/source/domains_test.go b/internal/source/domains_test.go
index 24008b08..2382e756 100644
--- a/internal/source/domains_test.go
+++ b/internal/source/domains_test.go
@@ -65,24 +65,21 @@ func TestGetDomain(t *testing.T) {
newSource.On("GetDomain", testDomain).
Return(&domain.Domain{Name: testDomain}, nil).
Once()
+ newSource.On("IsReady").Return(true).Once()
defer newSource.AssertExpectations(t)
- domains := &Domains{
- disk: disk.New(),
- gitlab: newSource,
- }
+ domains := newTestDomains(t, newSource)
domains.GetDomain(testDomain)
})
t.Run("when requesting a non-test domain", func(t *testing.T) {
newSource := NewMockSource()
+ newSource.On("IsReady").Return(true).Once()
+
defer newSource.AssertExpectations(t)
- domains := &Domains{
- disk: disk.New(),
- gitlab: newSource,
- }
+ domains := newTestDomains(t, newSource)
domain, err := domains.GetDomain("domain.test.io")
@@ -94,10 +91,7 @@ func TestGetDomain(t *testing.T) {
newSource := NewMockSource()
defer newSource.AssertExpectations(t)
- domains := &Domains{
- disk: disk.New(),
- gitlab: newSource,
- }
+ domains := newTestDomains(t, newSource)
domain, err := domains.GetDomain("pages-broken-poc.gitlab.io")
@@ -122,12 +116,11 @@ func TestGetDomain(t *testing.T) {
newSource.On("GetDomain", testDomain).
Return(&domain.Domain{Name: testDomain}, nil).
Once()
+ newSource.On("IsReady").Return(true).Once()
+
defer newSource.AssertExpectations(t)
- domains := &Domains{
- disk: disk.New(),
- gitlab: newSource,
- }
+ domains := newTestDomains(t, newSource)
domains.GetDomain(testDomain)
})
@@ -156,8 +149,6 @@ func TestGetDomainWithIncrementalrolloutOfGitLabSource(t *testing.T) {
// Generates FNV 2643293380, 2643293380 % 100 = 80
domain80 := "test-domain-b.com"
- diskSource := disk.New()
-
gitlabSourceConfig.Domains.Rollout.Percentage = 80
type testDomain struct {
@@ -201,12 +192,10 @@ func TestGetDomainWithIncrementalrolloutOfGitLabSource(t *testing.T) {
Once()
}
}
+ gitlabSource.On("IsReady").Return(true)
defer gitlabSource.AssertExpectations(t)
- domains := &Domains{
- disk: diskSource,
- gitlab: gitlabSource,
- }
+ domains := newTestDomains(t, gitlabSource)
gitlabSourceConfig.Domains.Rollout.Stickiness = tc.stickiness
@@ -217,3 +206,12 @@ func TestGetDomainWithIncrementalrolloutOfGitLabSource(t *testing.T) {
})
}
}
+
+func newTestDomains(t *testing.T, gitlabSource *MockSource) *Domains {
+ t.Helper()
+
+ return &Domains{
+ disk: disk.New(),
+ gitlab: gitlabSource,
+ }
+}
diff --git a/internal/source/gitlab/gitlab.go b/internal/source/gitlab/gitlab.go
index 5bacb603..2635d864 100644
--- a/internal/source/gitlab/gitlab.go
+++ b/internal/source/gitlab/gitlab.go
@@ -104,3 +104,11 @@ func (g *Gitlab) Resolve(r *http.Request) (*serving.Request, error) {
return &serving.Request{Serving: defaultServing()},
errors.New("could not match lookup path")
}
+
+// IsReady returns the value of Gitlab `isReady` which is updated by `Poll`.
+func (g *Gitlab) IsReady() bool {
+ g.mu.RLock()
+ defer g.mu.RUnlock()
+
+ return g.isReady
+}
diff --git a/internal/source/gitlab/gitlab_poll.go b/internal/source/gitlab/gitlab_poll.go
index 70644822..9fce7250 100644
--- a/internal/source/gitlab/gitlab_poll.go
+++ b/internal/source/gitlab/gitlab_poll.go
@@ -15,6 +15,7 @@ const (
// poll tries to call the /internal/pages/status API endpoint once plus
// `retries` every `interval`.
+// It updates the `isReady` value when successful.
// TODO: Remove in https://gitlab.com/gitlab-org/gitlab/-/issues/218357
func (g *Gitlab) poll(retries int, interval time.Duration) {
var err error
diff --git a/internal/source/source.go b/internal/source/source.go
index 4b43b8f4..5540066c 100644
--- a/internal/source/source.go
+++ b/internal/source/source.go
@@ -5,4 +5,5 @@ import "gitlab.com/gitlab-org/gitlab-pages/internal/domain"
// Source represents an abstract interface of a domains configuration source.
type Source interface {
GetDomain(string) (*domain.Domain, error)
+ IsReady() bool
}
diff --git a/internal/source/source_mock.go b/internal/source/source_mock.go
index ee24d804..7c693eb1 100644
--- a/internal/source/source_mock.go
+++ b/internal/source/source_mock.go
@@ -18,6 +18,12 @@ func (m *MockSource) GetDomain(name string) (*domain.Domain, error) {
return args.Get(0).(*domain.Domain), args.Error(1)
}
+func (m *MockSource) IsReady() bool {
+ args := m.Called()
+
+ return args.Get(0).(bool)
+}
+
// NewMockSource returns a new Source mock for testing
func NewMockSource() *MockSource {
return &MockSource{}