github.com/netdata/go.d.plugin@v0.58.1/modules/vsphere/scrape/scrape_test.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package scrape 4 5 import ( 6 "crypto/tls" 7 "net/url" 8 "testing" 9 "time" 10 11 "github.com/netdata/go.d.plugin/modules/vsphere/client" 12 "github.com/netdata/go.d.plugin/modules/vsphere/discover" 13 rs "github.com/netdata/go.d.plugin/modules/vsphere/resources" 14 "github.com/netdata/go.d.plugin/pkg/tlscfg" 15 16 "github.com/stretchr/testify/assert" 17 "github.com/stretchr/testify/require" 18 "github.com/vmware/govmomi/simulator" 19 ) 20 21 func TestNew(t *testing.T) { 22 } 23 24 func TestScraper_ScrapeVMs(t *testing.T) { 25 s, res, teardown := prepareScraper(t) 26 defer teardown() 27 28 metrics := s.ScrapeVMs(res.VMs) 29 assert.Len(t, metrics, len(res.VMs)) 30 } 31 32 func TestScraper_ScrapeHosts(t *testing.T) { 33 s, res, teardown := prepareScraper(t) 34 defer teardown() 35 36 metrics := s.ScrapeHosts(res.Hosts) 37 assert.Len(t, metrics, len(res.Hosts)) 38 } 39 40 func prepareScraper(t *testing.T) (s *Scraper, res *rs.Resources, teardown func()) { 41 model, srv := createSim(t) 42 teardown = func() { model.Remove(); srv.Close() } 43 44 c := newClient(t, srv.URL) 45 d := discover.New(c) 46 res, err := d.Discover() 47 require.NoError(t, err) 48 49 return New(c), res, teardown 50 } 51 52 func newClient(t *testing.T, vCenterURL *url.URL) *client.Client { 53 c, err := client.New(client.Config{ 54 URL: vCenterURL.String(), 55 User: "admin", 56 Password: "password", 57 Timeout: time.Second * 3, 58 TLSConfig: tlscfg.TLSConfig{InsecureSkipVerify: true}, 59 }) 60 require.NoError(t, err) 61 return c 62 } 63 64 func createSim(t *testing.T) (*simulator.Model, *simulator.Server) { 65 model := simulator.VPX() 66 err := model.Create() 67 require.NoError(t, err) 68 model.Service.TLS = new(tls.Config) 69 return model, model.Service.NewServer() 70 }