Skip to content

Commit b387940

Browse files
authored
feat: deprecate NewReader and migrate to NewReaderOptions (#257)
## What does this PR do? this is a nicer alternative to performing breaking change on NewReader ## Why is it important? to avoid breaking changes and account for older branches having to migrate ## Checklist <!-- Mandatory Add a checklist of things that are required to be reviewed in order to have the PR approved List here all the items you have verified BEFORE sending this PR. Please DO NOT remove any item, striking through those that do not apply. (Just in case, strikethrough uses two tildes. ~~Scratch this.~~) --> - [ ] My code follows the style guidelines of this project - [ ] I have commented my code, particularly in hard-to-understand areas - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have added an entry in `CHANGELOG.md` ## Author's Checklist <!-- Recommended Add a checklist of things that are required to be reviewed in order to have the PR approved --> - [ ] ## Related issues <!-- Recommended Link related issues below. Insert the issue link or reference after the word "Closes" if merging this should automatically close it. - Closes #123 - Relates #123 - Requires #123 - Superseds #123 --> -
1 parent 53703d3 commit b387940

File tree

3 files changed

+44
-11
lines changed

3 files changed

+44
-11
lines changed

metric/system/cgroup/reader.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,13 @@ type ReaderOptions struct {
119119
}
120120

121121
// NewReader creates and returns a new Reader.
122-
func NewReader(rootfsMountpoint resolve.Resolver, ignoreRootCgroups bool, logger *logp.Logger) (*Reader, error) {
122+
//
123+
// Deprecated: use NewReaderOptions
124+
func NewReader(rootfsMountpoint resolve.Resolver, ignoreRootCgroups bool) (*Reader, error) {
123125
return NewReaderOptions(ReaderOptions{
124126
RootfsMountpoint: rootfsMountpoint,
125127
IgnoreRootCgroups: ignoreRootCgroups,
126-
Logger: logger,
128+
Logger: logp.NewNopLogger(),
127129
})
128130
}
129131

@@ -258,7 +260,10 @@ func (r *Reader) GetV2StatsForProcess(pid int) (*StatsV2, error) { //nolint: dup
258260
// ProcessCgroupPaths is a wrapper around Reader.ProcessCgroupPaths for libraries that only need the slimmer functionality from
259261
// the gosigar cgroups code. This does not have the same function signature, and consumers still need to distinguish between v1 and v2 cgroups.
260262
func ProcessCgroupPaths(hostfs resolve.Resolver, pid int, logger *logp.Logger) (PathList, error) {
261-
reader, err := NewReader(hostfs, false, logger)
263+
reader, err := NewReaderOptions(ReaderOptions{
264+
RootfsMountpoint: hostfs,
265+
Logger: logger,
266+
})
262267
if err != nil {
263268
return PathList{}, fmt.Errorf("error creating cgroups reader: %w", err)
264269
}

metric/system/cgroup/reader_test.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@ func TestReaderOptsWithoutResolve(t *testing.T) {
5353

5454
func TestV1EventDifferentPaths(t *testing.T) {
5555
pid := 3757
56-
reader, err := NewReader(resolve.NewTestResolver("testdata/ubuntu1804"), true, logptest.NewTestingLogger(t, ""))
56+
reader, err := NewReaderOptions(ReaderOptions{
57+
RootfsMountpoint: resolve.NewTestResolver("testdata/ubuntu1804"),
58+
IgnoreRootCgroups: true,
59+
Logger: logptest.NewTestingLogger(t, ""),
60+
})
5761
require.NoError(t, err, "error in NewReader")
5862

5963
stats, err := reader.GetV1StatsForProcess(pid)
@@ -67,7 +71,11 @@ func TestV1EventDifferentPaths(t *testing.T) {
6771
}
6872

6973
func TestReaderGetStatsV1(t *testing.T) {
70-
reader, err := NewReader(resolve.NewTestResolver("testdata/docker"), true, logptest.NewTestingLogger(t, ""))
74+
reader, err := NewReaderOptions(ReaderOptions{
75+
RootfsMountpoint: resolve.NewTestResolver("testdata/docker"),
76+
IgnoreRootCgroups: true,
77+
Logger: logptest.NewTestingLogger(t, ""),
78+
})
7179
require.NoError(t, err, "error in NewReader")
7280

7381
stats, err := reader.GetV1StatsForProcess(985)
@@ -97,7 +105,11 @@ func TestReaderGetStatsV1(t *testing.T) {
97105
// testcase for the situation where both cgroup v1 and v2 controllers exist but
98106
// /sys/fs/cgroup/unified is not mounted
99107
func TestReaderGetStatsV1MalformedHybrid(t *testing.T) {
100-
reader, err := NewReader(resolve.NewTestResolver("testdata/amzn2"), true, logptest.NewTestingLogger(t, ""))
108+
reader, err := NewReaderOptions(ReaderOptions{
109+
RootfsMountpoint: resolve.NewTestResolver("testdata/amzn2"),
110+
IgnoreRootCgroups: true,
111+
Logger: logptest.NewTestingLogger(t, ""),
112+
})
101113
require.NoError(t, err, "error in NewReader")
102114

103115
stats, err := reader.GetV1StatsForProcess(493239)
@@ -124,7 +136,11 @@ func TestReaderGetStatsV1MalformedHybrid(t *testing.T) {
124136
}
125137

126138
func TestReaderGetStatsV2(t *testing.T) {
127-
reader, err := NewReader(resolve.NewTestResolver("testdata/docker"), true, logptest.NewTestingLogger(t, ""))
139+
reader, err := NewReaderOptions(ReaderOptions{
140+
RootfsMountpoint: resolve.NewTestResolver("testdata/docker"),
141+
IgnoreRootCgroups: true,
142+
Logger: logptest.NewTestingLogger(t, ""),
143+
})
128144
require.NoError(t, err, "error in NewReader")
129145

130146
stats, err := reader.GetV2StatsForProcess(312)

metric/system/cgroup/util_test.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,10 @@ func TestSubsystemMountpoints(t *testing.T) {
157157
}
158158

159159
func TestProcessCgroupPaths(t *testing.T) {
160-
reader, err := NewReader(resolve.NewTestResolver("testdata/docker"), false, logptest.NewTestingLogger(t, ""))
160+
reader, err := NewReaderOptions(ReaderOptions{
161+
RootfsMountpoint: resolve.NewTestResolver("testdata/docker"),
162+
Logger: logptest.NewTestingLogger(t, ""),
163+
})
161164
if err != nil {
162165
t.Fatalf("error in NewReader: %s", err)
163166
}
@@ -181,7 +184,10 @@ func TestProcessCgroupPaths(t *testing.T) {
181184
}
182185

183186
func TestProcessCgroupHybridPaths(t *testing.T) {
184-
reader, err := NewReader(resolve.NewTestResolver("testdata/amzn2"), false, logptest.NewTestingLogger(t, ""))
187+
reader, err := NewReaderOptions(ReaderOptions{
188+
RootfsMountpoint: resolve.NewTestResolver("testdata/amzn2"),
189+
Logger: logptest.NewTestingLogger(t, ""),
190+
})
185191
if err != nil {
186192
t.Fatalf("error in NewReader: %s", err)
187193
}
@@ -206,7 +212,10 @@ func TestProcessCgroupHybridPaths(t *testing.T) {
206212
}
207213

208214
func TestProcessCgroupPathsV2(t *testing.T) {
209-
reader, err := NewReader(resolve.NewTestResolver("testdata/docker"), false, logptest.NewTestingLogger(t, ""))
215+
reader, err := NewReaderOptions(ReaderOptions{
216+
RootfsMountpoint: resolve.NewTestResolver("testdata/docker"),
217+
Logger: logptest.NewTestingLogger(t, ""),
218+
})
210219
if err != nil {
211220
t.Fatalf("error in NewReader: %s", err)
212221
}
@@ -233,7 +242,10 @@ func TestMountpointsV2(t *testing.T) {
233242
[]byte(pidFmt), 0o744)
234243
require.NoError(t, err)
235244

236-
reader, err := NewReader(resolve.NewTestResolver("testdata/docker2"), false, logptest.NewTestingLogger(t, ""))
245+
reader, err := NewReaderOptions(ReaderOptions{
246+
RootfsMountpoint: resolve.NewTestResolver("testdata/docker2"),
247+
Logger: logptest.NewTestingLogger(t, ""),
248+
})
237249
require.NoError(t, err)
238250

239251
stats, err := reader.GetStatsForPid(2233801)

0 commit comments

Comments
 (0)