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  }