mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	Add a flag for the sysfs location.
Analogous to `collector.procfs`, but for `/sys`. Add tests for both.
This commit is contained in:
		
							parent
							
								
									24c9db9600
								
							
						
					
					
						commit
						85eb47197f
					
				|  | @ -25,10 +25,6 @@ import ( | |||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	sysfsNet = "/sys/class/net" | ||||
| ) | ||||
| 
 | ||||
| type bondingCollector struct { | ||||
| 	slaves, active *prometheus.GaugeVec | ||||
| } | ||||
|  | @ -62,7 +58,7 @@ func NewBondingCollector() (Collector, error) { | |||
| 
 | ||||
| // Update reads and exposes bonding states, implements Collector interface. Caution: This works only on linux.
 | ||||
| func (c *bondingCollector) Update(ch chan<- prometheus.Metric) (err error) { | ||||
| 	bondingStats, err := readBondingStats(sysfsNet) | ||||
| 	bondingStats, err := readBondingStats(sysFilePath("class/net")) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  |  | |||
|  | @ -23,8 +23,13 @@ import ( | |||
| var ( | ||||
| 	// The path of the proc filesystem.
 | ||||
| 	procPath = flag.String("collector.procfs", procfs.DefaultMountPoint, "procfs mountpoint.") | ||||
| 	sysPath  = flag.String("collector.sysfs", "/sys", "sysfs mountpoint.") | ||||
| ) | ||||
| 
 | ||||
| func procFilePath(name string) string { | ||||
| 	return path.Join(*procPath, name) | ||||
| } | ||||
| 
 | ||||
| func sysFilePath(name string) string { | ||||
| 	return path.Join(*sysPath, name) | ||||
| } | ||||
							
								
								
									
										77
									
								
								collector/paths_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										77
									
								
								collector/paths_test.go
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,77 @@ | |||
| // Copyright 2015 The Prometheus Authors
 | ||||
| // Licensed under the Apache License, Version 2.0 (the "License");
 | ||||
| // you may not use this file except in compliance with the License.
 | ||||
| // You may obtain a copy of the License at
 | ||||
| //
 | ||||
| // http://www.apache.org/licenses/LICENSE-2.0
 | ||||
| //
 | ||||
| // Unless required by applicable law or agreed to in writing, software
 | ||||
| // distributed under the License is distributed on an "AS IS" BASIS,
 | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | ||||
| // See the License for the specific language governing permissions and
 | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| package collector | ||||
| 
 | ||||
| import ( | ||||
| 	"flag" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/prometheus/procfs" | ||||
| ) | ||||
| 
 | ||||
| func TestDefaultProcPath(t *testing.T) { | ||||
| 	if err := flag.Set("collector.procfs", procfs.DefaultMountPoint); err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := procFilePath("somefile"), "/proc/somefile"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := procFilePath("some/file"), "/proc/some/file"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestCustomProcPath(t *testing.T) { | ||||
| 	if err := flag.Set("collector.procfs", "./../some/./place/"); err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := procFilePath("somefile"), "../some/place/somefile"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := procFilePath("some/file"), "../some/place/some/file"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestDefaultSysPath(t *testing.T) { | ||||
| 	if err := flag.Set("collector.sysfs", "/sys"); err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := sysFilePath("somefile"), "/sys/somefile"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := sysFilePath("some/file"), "/sys/some/file"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestCustomSysPath(t *testing.T) { | ||||
| 	if err := flag.Set("collector.sysfs", "./../some/./place/"); err != nil { | ||||
| 		t.Fatal(err) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := sysFilePath("somefile"), "../some/place/somefile"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| 
 | ||||
| 	if got, want := sysFilePath("some/file"), "../some/place/some/file"; got != want { | ||||
| 		t.Errorf("Expected: %s, Got: %s", want, got) | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in a new issue