github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/mongo/service_test.go (about)

     1  // Copyright 2015 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package mongo_test
     5  
     6  import (
     7  	"fmt"
     8  	"os"
     9  	"path/filepath"
    10  	"time"
    11  
    12  	"github.com/juju/clock/testclock"
    13  	jc "github.com/juju/testing/checkers"
    14  	gc "gopkg.in/check.v1"
    15  
    16  	"github.com/juju/juju/mongo"
    17  	coretesting "github.com/juju/juju/testing"
    18  )
    19  
    20  type serviceSuite struct {
    21  	coretesting.BaseSuite
    22  }
    23  
    24  var _ = gc.Suite(&serviceSuite{})
    25  
    26  func (s *serviceSuite) TestNewConfSnap(c *gc.C) {
    27  	dataDir := "/var/lib/juju"
    28  	dbDir := dataDir + "/db"
    29  	logPath := dataDir + "/logs/mongodb.log"
    30  	confArgs := mongo.ConfigArgs{
    31  		Clock:                 testclock.NewClock(time.Now()),
    32  		DataDir:               dataDir,
    33  		DBDir:                 dbDir,
    34  		Port:                  12345,
    35  		OplogSizeMB:           10,
    36  		IPv6:                  true,
    37  		LogPath:               logPath,
    38  		ReplicaSet:            "juju",
    39  		MemoryProfile:         mongo.MemoryProfileLow,
    40  		PEMKeyFile:            "/var/lib/juju/server.pem",
    41  		PEMKeyPassword:        "ignored",
    42  		AuthKeyFile:           "/var/lib/juju/shared-secret",
    43  		Syslog:                true,
    44  		Quiet:                 true,
    45  		TLSMode:               "requireTLS",
    46  		WiredTigerCacheSizeGB: 0.25,
    47  		BindToAllIP:           true,
    48  	}
    49  	confFile := filepath.Join(c.MkDir(), "conf")
    50  	err := mongo.WriteConfig(confArgs, confFile)
    51  	c.Assert(err, jc.ErrorIsNil)
    52  
    53  	contents, err := os.ReadFile(confFile)
    54  	c.Assert(err, jc.ErrorIsNil)
    55  	expected := fmt.Sprintf(`
    56  # WARNING
    57  # autogenerated by juju on %s
    58  # manual changes to this file are likely to be overwritten
    59  auth = true
    60  bind_ip_all = true
    61  dbpath = %s/db
    62  ipv6 = true
    63  journal = true
    64  keyFile = %s/shared-secret
    65  logpath = %s/logs/mongodb.log
    66  oplogSize = 10
    67  port = 12345
    68  quiet = true
    69  replSet = juju
    70  storageEngine = wiredTiger
    71  syslog = true
    72  tlsCertificateKeyFile = %s/server.pem
    73  tlsCertificateKeyFilePassword=ignored
    74  tlsMode = requireTLS
    75  wiredTigerCacheSizeGB = 0.25`[1:], confArgs.Clock.Now().UTC().Format(time.RFC822), dataDir, dataDir, dataDir, dataDir)
    76  
    77  	c.Assert(string(contents), jc.DeepEquals, expected)
    78  
    79  }