Skip to content

Commit

Permalink
Remove ecosystem usage service API call (#1335)
Browse files Browse the repository at this point in the history
  • Loading branch information
attiasas authored Jan 19, 2025
1 parent 3dade73 commit 3cb054a
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 108 deletions.
3 changes: 2 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,8 @@ require (
gopkg.in/warnings.v0 v0.1.2 // indirect
)

// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20241225183733-80a5e1ba7a2c
// attiasas:remove_usage_ecosys
replace github.com/jfrog/jfrog-client-go => github.com/attiasas/jfrog-client-go v0.0.0-20250119095720-828b0be8a057

// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20241121100855-e7a75ceee2bd

Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFI
github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/attiasas/jfrog-client-go v0.0.0-20250119095720-828b0be8a057 h1:UQca9wB62fqY3JxhY8jARn1Y7g9T7VDVtBXB+UfNmFU=
github.com/attiasas/jfrog-client-go v0.0.0-20250119095720-828b0be8a057/go.mod h1:ohIfKpMBCQsE9kunrKQ1wvoExpqsPLaluRFO186B5EM=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0 h1:any4BmKE+jGIaMpnU8YgH/I2LPiLBufr6oMMlVBbn9M=
github.com/bradleyjkemp/cupaloy/v2 v2.8.0/go.mod h1:bm7JXdkRd4BHJk9HpwqAI8BoAY1lps46Enkdqw6aRX0=
github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs=
Expand Down Expand Up @@ -93,8 +95,6 @@ github.com/jfrog/build-info-go v1.10.8 h1:8D4wtvKzLS1hzfDWtfH4OliZLtLCgL62tXCnGW
github.com/jfrog/build-info-go v1.10.8/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s=
github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4=
github.com/jfrog/jfrog-client-go v1.49.0 h1:NaTK6+LQBEJafL//6ntnS/eVx1dZMJnxydALwWHKORQ=
github.com/jfrog/jfrog-client-go v1.49.0/go.mod h1:ohIfKpMBCQsE9kunrKQ1wvoExpqsPLaluRFO186B5EM=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
Expand Down
57 changes: 0 additions & 57 deletions utils/usage/usage.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
clientutils "github.com/jfrog/jfrog-client-go/utils"
"github.com/jfrog/jfrog-client-go/utils/errorutils"
"github.com/jfrog/jfrog-client-go/utils/log"
ecosysusage "github.com/jfrog/jfrog-client-go/utils/usage"
xrayusage "github.com/jfrog/jfrog-client-go/xray/usage"

"golang.org/x/sync/errgroup"
Expand All @@ -27,7 +26,6 @@ type UsageReporter struct {
serverDetails *config.ServerDetails
reportWaitGroup *errgroup.Group

sendToEcosystem bool
sendToXray bool
sendToArtifactory bool
}
Expand All @@ -48,7 +46,6 @@ func NewUsageReporter(productId string, serverDetails *config.ServerDetails) *Us
ProductId: productId,
serverDetails: serverDetails,
reportWaitGroup: new(errgroup.Group),
sendToEcosystem: true,
sendToXray: true,
sendToArtifactory: true,
}
Expand All @@ -63,11 +60,6 @@ func ShouldReportUsage() (reportUsage bool) {
return reportUsage
}

func (ur *UsageReporter) SetSendToEcosystem(send bool) *UsageReporter {
ur.sendToEcosystem = send
return ur
}

func (ur *UsageReporter) SetSendToXray(send bool) *UsageReporter {
ur.sendToXray = send
return ur
Expand All @@ -89,14 +81,6 @@ func (ur *UsageReporter) Report(features ...ReportFeature) {
return
}
log.Debug(ArtifactoryCallHomePrefix, "Sending info...")
if ur.sendToEcosystem {
ur.reportWaitGroup.Go(func() (err error) {
if err = ur.reportToEcosystem(features...); err != nil {
err = fmt.Errorf("ecosystem, %w", err)
}
return
})
}
if ur.sendToXray {
ur.reportWaitGroup.Go(func() (err error) {
if err = ur.reportToXray(features...); err != nil {
Expand All @@ -122,22 +106,6 @@ func (ur *UsageReporter) WaitForResponses() (err error) {
return
}

func (ur *UsageReporter) reportToEcosystem(features ...ReportFeature) (err error) {
if ur.serverDetails.Url == "" {
err = errorutils.CheckErrorf("JFrog Platform URL is not set")
return
}
reports, err := ur.convertAttributesToEcosystemReports(features...)
if err != nil {
return
}
if len(reports) == 0 {
err = errorutils.CheckErrorf("nothing to send")
return
}
return ecosysusage.SendEcosystemUsageReports(reports...)
}

func (ur *UsageReporter) reportToXray(features ...ReportFeature) (err error) {
events := ur.convertAttributesToXrayEvents(features...)
if len(events) == 0 {
Expand Down Expand Up @@ -219,28 +187,3 @@ func (ur *UsageReporter) convertAttributesToXrayEvents(reportFeatures ...ReportF
}
return
}

func (ur *UsageReporter) convertAttributesToEcosystemReports(reportFeatures ...ReportFeature) (reports []ecosysusage.ReportEcosystemUsageData, err error) {
accountId := ur.serverDetails.Url
clientToFeaturesMap := map[string][]string{}
// Combine
for _, feature := range reportFeatures {
if feature.FeatureId == "" {
continue
}
if features, contains := clientToFeaturesMap[feature.ClientId]; contains {
clientToFeaturesMap[feature.ClientId] = append(features, feature.FeatureId)
} else {
clientToFeaturesMap[feature.ClientId] = []string{feature.FeatureId}
}
}
// Create data
for clientId, features := range clientToFeaturesMap {
var report ecosysusage.ReportEcosystemUsageData
if report, err = ecosysusage.CreateUsageData(ur.ProductId, accountId, clientId, features...); err != nil {
return
}
reports = append(reports, report)
}
return
}
54 changes: 6 additions & 48 deletions utils/usage/usage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (

"github.com/jfrog/jfrog-cli-core/v2/utils/config"
"github.com/jfrog/jfrog-client-go/artifactory/usage"
ecosysusage "github.com/jfrog/jfrog-client-go/utils/usage"
xrayusage "github.com/jfrog/jfrog-client-go/xray/usage"

"github.com/stretchr/testify/assert"
Expand Down Expand Up @@ -41,25 +40,6 @@ var (
{FeatureId: "featureId", ClientId: "clientId2"},
{FeatureId: "featureId"},
}
ecosystemData = []ecosysusage.ReportEcosystemUsageData{
{
ProductId: productName,
AccountId: serverUrl,
ClientId: "clientId",
Features: []string{"featureId2"},
},
{
ProductId: productName,
AccountId: serverUrl,
ClientId: "clientId2",
Features: []string{"featureId"},
},
{
ProductId: productName,
AccountId: serverUrl,
Features: []string{"featureId"},
},
}
)

func TestConvertToArtifactoryUsage(t *testing.T) {
Expand All @@ -69,22 +49,13 @@ func TestConvertToArtifactoryUsage(t *testing.T) {
}
}

func TestConvertToEcosystemUsage(t *testing.T) {
reporter := NewUsageReporter(productName, &config.ServerDetails{Url: serverUrl})
for i := 0; i < len(features); i++ {
report, err := reporter.convertAttributesToEcosystemReports(features[i])
assert.NoError(t, err)
assert.Equal(t, ecosystemData[i], report[0])
}
}

func TestReportArtifactoryUsage(t *testing.T) {
const commandName = "test-command"
server := httptest.NewServer(createArtifactoryUsageHandler(t, productName, commandName))
defer server.Close()
serverDetails := &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}

reporter := NewUsageReporter(productName, serverDetails).SetSendToEcosystem(false).SetSendToXray(false)
reporter := NewUsageReporter(productName, serverDetails).SetSendToXray(false)

reporter.Report(ReportFeature{
FeatureId: commandName,
Expand All @@ -93,15 +64,15 @@ func TestReportArtifactoryUsage(t *testing.T) {
}

func TestReportArtifactoryUsageError(t *testing.T) {
reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToEcosystem(false).SetSendToXray(false)
reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToXray(false)
reporter.Report(ReportFeature{
FeatureId: "",
})
assert.Error(t, reporter.WaitForResponses())

server := httptest.NewServer(create404UsageHandler(t))
defer server.Close()
reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToEcosystem(false).SetSendToXray(false)
reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToXray(false)
reporter.Report(ReportFeature{
FeatureId: "",
})
Expand Down Expand Up @@ -140,7 +111,7 @@ func TestReportXrayUsage(t *testing.T) {
defer server.Close()
serverDetails := &config.ServerDetails{XrayUrl: server.URL + "/"}

reporter := NewUsageReporter(productName, serverDetails).SetSendToEcosystem(false).SetSendToArtifactory(false)
reporter := NewUsageReporter(productName, serverDetails).SetSendToArtifactory(false)

reporter.Report(ReportFeature{
FeatureId: commandName,
Expand All @@ -150,13 +121,13 @@ func TestReportXrayUsage(t *testing.T) {
}

func TestReportXrayError(t *testing.T) {
reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToEcosystem(false).SetSendToArtifactory(false)
reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToArtifactory(false)
reporter.Report(ReportFeature{})
assert.Error(t, reporter.WaitForResponses())

server := httptest.NewServer(create404UsageHandler(t))
defer server.Close()
reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToEcosystem(false).SetSendToArtifactory(false)
reporter = NewUsageReporter("", &config.ServerDetails{ArtifactoryUrl: server.URL + "/"}).SetSendToArtifactory(false)
reporter.Report(ReportFeature{})
assert.Error(t, reporter.WaitForResponses())
}
Expand Down Expand Up @@ -187,19 +158,6 @@ func createXrayUsageHandler(t *testing.T, productId, commandName, clientId strin
}
}

func TestReportEcosystemUsageError(t *testing.T) {
// No features
reporter := NewUsageReporter("", &config.ServerDetails{}).SetSendToArtifactory(false).SetSendToXray(false)
reporter.Report()
assert.NoError(t, reporter.WaitForResponses())
// Empty features
reporter.Report(ReportFeature{
FeatureId: "",
ClientId: "client",
})
assert.Error(t, reporter.WaitForResponses())
}

func create404UsageHandler(t *testing.T) http.HandlerFunc {
return func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusNotFound)
Expand Down

0 comments on commit 3cb054a

Please sign in to comment.