本文整理汇总了Golang中github.com/APTrust/exchange/util/testutil.ShouldRunIntegrationTests函数的典型用法代码示例。如果您正苦于以下问题:Golang ShouldRunIntegrationTests函数的具体用法?Golang ShouldRunIntegrationTests怎么用?Golang ShouldRunIntegrationTests使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ShouldRunIntegrationTests函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: TestReplicationsMarkedAsStored
// TestReplicationsMarkedAsStored - make sure that the ReplicationTransfer
// records are marked with stored = true on the remote nodes.
func TestReplicationsMarkedAsStored(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err, "Could not create context")
// Get a list of ReplicationTransfers where our local node
// is the ToNode, and make sure we marked them all as stored
// on the FromNode.
localClient, err := network.NewDPNRestClient(
_context.Config.DPN.RestClient.LocalServiceURL,
_context.Config.DPN.RestClient.LocalAPIRoot,
_context.Config.DPN.RestClient.LocalAuthToken,
_context.Config.DPN.LocalNode,
_context.Config.DPN)
require.Nil(t, err)
remoteClients, err := localClient.GetRemoteClients()
require.Nil(t, err)
xferParams := url.Values{}
xferParams.Set("to_node", _context.Config.DPN.LocalNode)
dpnResp := localClient.ReplicationTransferList(xferParams)
require.Nil(t, dpnResp.Error)
for _, xfer := range dpnResp.ReplicationTransfers() {
remoteClient := remoteClients[xfer.FromNode]
require.NotNil(t, remoteClient)
resp := remoteClient.ReplicationTransferGet(xfer.ReplicationId)
require.Nil(t, resp.Error)
remoteXfer := resp.ReplicationTransfer()
require.NotNil(t, remoteXfer)
assert.True(t, remoteXfer.Stored)
}
}
示例2: TestItemsAreInLongTermStorage
// TestItemsAreInLongTermStorage - make sure that each tar file is
// stored in our S3 test storage bucket, with correct metadata.
func TestItemsAreInLongTermStorage(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err, "Could not create context")
localClient, err := network.NewDPNRestClient(
_context.Config.DPN.RestClient.LocalServiceURL,
_context.Config.DPN.RestClient.LocalAPIRoot,
_context.Config.DPN.RestClient.LocalAuthToken,
_context.Config.DPN.LocalNode,
_context.Config.DPN)
require.Nil(t, err)
// s3List lists bucket contents.
s3List := apt_network.NewS3ObjectList(
constants.AWSVirginia,
_context.Config.DPN.DPNPreservationBucket,
int64(100),
)
// s3Head gets metadata about specific objects in S3/Glacier.
s3Head := apt_network.NewS3Head(_context.Config.APTrustS3Region,
_context.Config.DPN.DPNPreservationBucket)
for _, identifier := range dpn_testutil.BAG_IDS {
resp := localClient.DPNBagGet(identifier)
dpnBag := resp.Bag()
require.NotNil(t, dpnBag)
if dpnBag.IngestNode == _context.Config.DPN.LocalNode {
continue // we would not have replicated our own bag
}
tarFileName := fmt.Sprintf("%s.tar", identifier)
s3List.GetList(tarFileName)
require.NotEmpty(t, s3List.Response.Contents, "%s not found in S3", tarFileName)
object := s3List.Response.Contents[0]
fiveMinutesAgo := time.Now().UTC().Add(-5 * time.Minute)
require.NotNil(t, object.LastModified)
assert.True(t, object.LastModified.After(fiveMinutesAgo))
// Make sure each item has the expected metadata.
// s3Head.Response.Metadata is map[string]*string.
s3Head.Head(tarFileName)
require.Empty(t, s3Head.ErrorMessage)
metadata := s3Head.Response.Metadata
require.NotNil(t, metadata)
// Amazon library transforms first letters of keys to CAPS
require.NotNil(t, metadata["From_node"])
require.NotNil(t, metadata["Transfer_id"])
require.NotNil(t, metadata["Member"])
require.NotNil(t, metadata["Local_id"])
require.NotNil(t, metadata["Version"])
assert.NotEmpty(t, *metadata["From_node"])
assert.NotEmpty(t, *metadata["Transfer_id"])
assert.NotEmpty(t, *metadata["Member"])
assert.NotEmpty(t, *metadata["Local_id"])
assert.NotEmpty(t, *metadata["Version"])
}
}
示例3: TestIngestStoreTarFilesDeleted
// TestIngestStoreTarFilesDeleted tests whether all expected DPN bags
// (tar files) have been deleted from the staging area.
func TestIngestStoreTarFilesDeleted(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err)
pattern := filepath.Join(_context.Config.DPN.StagingDirectory, "test.edu", "*.tar")
files, err := filepath.Glob(pattern)
require.Nil(t, err)
assert.Equal(t, 0, len(files))
}
示例4: TestIngestStoreItemsAreInStorage
// TestIngestStoreItemsAreInStorage makes sure that the items we sent off
// to long-term storage in AWS actually made it there.
func TestIngestStoreItemsAreInStorage(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err, "Could not create context")
maxItemsToList := int64(1)
// s3List lists bucket contents.
s3List := network.NewS3ObjectList(
constants.AWSVirginia,
_context.Config.DPN.DPNPreservationBucket,
maxItemsToList)
// s3Head gets metadata about specific objects in S3/Glacier.
s3Head := network.NewS3Head(_context.Config.APTrustS3Region,
_context.Config.DPN.DPNPreservationBucket)
pathToLogFile := filepath.Join(_context.Config.LogDirectory, "dpn_ingest_store.json")
for _, s3Key := range apt_testutil.INTEGRATION_GOOD_BAGS[0:7] {
parts := strings.Split(s3Key, "/")
localTarFileName := parts[1] // APTrust bag name. E.g. "test.edu.test_123.tar"
manifest, err := apt_testutil.FindDPNIngestManifestInLog(pathToLogFile, localTarFileName)
require.Nil(t, err, "Could not find JSON record for %s", localTarFileName)
parts = strings.Split(manifest.StorageURL, "/")
dpnTarFileName := parts[len(parts)-1] // DPN bag name: <uuid>.tar
s3List.GetList(dpnTarFileName)
require.Empty(t, s3List.ErrorMessage)
require.EqualValues(t, 1, len(s3List.Response.Contents), "Nothing in S3 for %s", dpnTarFileName)
obj := s3List.Response.Contents[0]
assert.Equal(t, dpnTarFileName, *obj.Key)
// Make sure each item has the expected metadata.
// s3Head.Response.Metadata is map[string]*string.
s3Head.Head(dpnTarFileName)
require.Empty(t, s3Head.ErrorMessage)
metadata := s3Head.Response.Metadata
require.NotNil(t, metadata, dpnTarFileName)
// Notice the Amazon library transforms the first letter of
// all our keys to upper case. WTF?
require.NotNil(t, metadata["From_node"], dpnTarFileName)
require.NotNil(t, metadata["Transfer_id"], dpnTarFileName)
require.NotNil(t, metadata["Member"], dpnTarFileName)
require.NotNil(t, metadata["Local_id"], dpnTarFileName)
require.NotNil(t, metadata["Version"], dpnTarFileName)
assert.NotEmpty(t, *metadata["From_node"], dpnTarFileName)
assert.NotEmpty(t, *metadata["Transfer_id"], dpnTarFileName)
assert.NotEmpty(t, *metadata["Member"], dpnTarFileName)
assert.NotEmpty(t, *metadata["Local_id"], dpnTarFileName)
assert.NotEmpty(t, *metadata["Version"], dpnTarFileName)
}
}
示例5: TestItemsCopiedToStaging
func TestItemsCopiedToStaging(t *testing.T) {
// Make sure that each of the expected bags has shown
// up in our test staging area.
if !testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
for i := 2; i <= 5; i++ {
_context, err := testutil.GetContext("integration.json")
require.Nil(t, err, "Could not create context")
filename := fmt.Sprintf("00000000-0000-4000-a000-00000000000%d.tar", i)
path := filepath.Join(_context.Config.DPN.StagingDirectory, filename)
assert.True(t, fileutil.FileExists(path), "File %s was not copied", path)
}
}
示例6: TestIngestStoreWorkItems
// TestIngestStoreWorkItems checks to see if Pharos WorkItems
// were updated correctly.
func TestIngestStoreWorkItems(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_, workItems, err := dpn_testutil.GetDPNWorkItems()
require.Nil(t, err)
for _, item := range workItems {
assert.Equal(t, constants.StageRecord, item.Stage)
assert.Equal(t, constants.StatusPending, item.Status)
assert.Equal(t, "Bag copied to long-term storage", item.Note)
assert.Equal(t, "", item.Node)
assert.Equal(t, 0, item.Pid)
assert.True(t, item.Retry)
}
}
示例7: TestIngestRecordWorkItems
// TestIngestRecordWorkItems checks to see if Pharos WorkItems
// were updated correctly.
func TestIngestRecordWorkItems(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_, workItems, err := dpn_testutil.GetDPNWorkItems()
require.Nil(t, err)
for _, item := range workItems {
assert.Equal(t, constants.StageResolve, item.Stage)
assert.Equal(t, constants.StatusSuccess, item.Status)
assert.Equal(t, "DPN ingest complete", item.Note)
assert.Equal(t, "", item.Node)
assert.Equal(t, 0, item.Pid)
assert.True(t, item.Retry)
}
}
示例8: TestInstutionsCached
func TestInstutionsCached(t *testing.T) {
if !testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
expected, actual := getBucketReaderOutputs(t)
testInstCache(t, expected, actual)
testWorkItemsCached(t, expected, actual)
testWorkItemsFetched(t, expected, actual)
testWorkItemsCreated(t, expected, actual)
testWorkItemsQueued(t, expected, actual)
testWorkItemsMarkedAsQueued(t, expected, actual)
testS3Items(t, expected, actual)
testErrors(t, expected, actual)
testWarnings(t, expected, actual)
}
示例9: TestIngestRecordJsonLog
// TestIngestRecordJsonLog checks that all expected entries are present
// in the dpn_ingest_record.json log.
func TestIngestRecordJsonLog(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err)
pathToLogFile := filepath.Join(_context.Config.LogDirectory, "dpn_ingest_record.json")
for _, s3Key := range apt_testutil.INTEGRATION_GOOD_BAGS[0:7] {
parts := strings.Split(s3Key, "/")
tarFileName := parts[1]
manifest, err := apt_testutil.FindDPNIngestManifestInLog(pathToLogFile, tarFileName)
require.Nil(t, err)
require.NotNil(t, manifest)
detail := fmt.Sprintf("%s from JSON log", tarFileName)
testIngestRecordManifest(t, _context, manifest, detail)
}
}
示例10: TestInteObjDPNUUID
// TestInteObjDPNUUID makes sure the DPN UUID was set on the
// IntellectualObject record in Pharos.
func TestInteObjDPNUUID(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err)
for _, s3Key := range apt_testutil.INTEGRATION_GOOD_BAGS[0:7] {
tar := strings.Replace(s3Key, "aptrust.receiving.test.", "", 1)
objIdentifier := strings.Replace(tar, ".tar", "", 1)
resp := _context.PharosClient.IntellectualObjectGet(objIdentifier, false, false)
require.Nil(t, resp.Error)
obj := resp.IntellectualObject()
require.NotNil(t, obj)
// DPNUUID is null in fixture data. It should be set after DPN ingest.
assert.True(t, util.LooksLikeUUID(obj.DPNUUID))
}
}
示例11: TestPackageCleanup
// TestPackageCleanup checks to see whether dpn_package cleaned up
// all of the intermediate files created during the bag building
// process. Those are directories containing untarred bags.
func TestPackageCleanup(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err)
pattern := filepath.Join(_context.Config.DPN.StagingDirectory, "test.edu", "*")
files, err := filepath.Glob(pattern)
require.Nil(t, err)
// Only the 7 tar file should remain. The 7 working directories
// should have been deleted. If anything other than a tar file
// remains, some part of cleanup failed.
assert.Equal(t, 7, len(files))
for _, file := range files {
assert.True(t, strings.HasSuffix(file, ".tar"))
}
}
示例12: TestIngestStoreItemsQueued
// TestIngestStoreItemsQueued checks to see if dpn_ingest_store pushed items
// into the dpn_ingest_record NSQ topic.
func TestIngestStoreItemsQueued(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := apt_testutil.GetContext("integration.json")
require.Nil(t, err, "Could not create context")
stats, err := _context.NSQClient.GetStats()
require.Nil(t, err)
foundTopic := false
for _, topic := range stats.Data.Topics {
if topic.TopicName == _context.Config.DPN.DPNIngestRecordWorker.NsqTopic {
// All 7 stored bags should show up in the record queue
foundTopic = true
assert.EqualValues(t, uint64(7), topic.MessageCount)
}
}
assert.True(t, foundTopic, "Nothing was queued in %s",
_context.Config.DPN.DPNIngestRecordWorker.NsqTopic)
}
示例13: TestPushToDPN
// test_push_to_dpn is for integration testing only.
// It creates a few WorkItems in Pharos asking that
// a handful of bags be pushed to DPN. Subsequent
// integration tests (such as dpn_queue) depend on
// the WorkItems created by this test.
func TestPushToDPN(t *testing.T) {
if !testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
configFile := filepath.Join("config", "integration.json")
config, err := models.LoadConfigFile(configFile)
require.Nil(t, err)
_context := context.NewContext(config)
for _, s3Key := range testutil.INTEGRATION_GOOD_BAGS[0:7] {
identifier := strings.Replace(s3Key, "aptrust.receiving.test.", "", 1)
identifier = strings.Replace(identifier, ".tar", "", 1)
resp := _context.PharosClient.IntellectualObjectPushToDPN(identifier)
workItem := resp.WorkItem()
require.Nil(t, resp.Error)
require.NotNil(t, workItem)
_context.MessageLog.Info("Created DPN work item #%d for %s",
workItem.Id, workItem.ObjectIdentifier)
}
}
示例14: TestValidItemInStorageQueue
func TestValidItemInStorageQueue(t *testing.T) {
// Make sure the copied DPN bags made it into the validation queue.
if !testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
_context, err := testutil.GetContext("integration.json")
require.Nil(t, err, "Could not create context")
stats, err := _context.NSQClient.GetStats()
require.Nil(t, err)
foundTopic := false
for _, topic := range stats.Data.Topics {
if topic.TopicName == _context.Config.DPN.DPNReplicationStoreWorker.NsqTopic {
// All 4 of the valid bags should appear in the store queue.
foundTopic = true
assert.EqualValues(t, uint64(4), topic.MessageCount)
}
}
assert.True(t, foundTopic, "Nothing was queued in %s",
_context.Config.DPN.DPNReplicationStoreWorker.NsqTopic)
}
示例15: TestIngestRecordWorkItemState
// TestIngestRecordWorkItemState checks to see if Pharos WorkItemState
// records were updated correctly.
func TestIngestRecordWorkItemState(t *testing.T) {
if !apt_testutil.ShouldRunIntegrationTests() {
t.Skip("Skipping integration test. Set ENV var RUN_EXCHANGE_INTEGRATION=true if you want to run them.")
}
// This actually retrieves DPN related WorkItems, not DPNWorkItems. Hmm...
_context, workItems, err := dpn_testutil.GetDPNWorkItems()
require.Nil(t, err)
for _, item := range workItems {
require.NotNil(t, item.WorkItemStateId)
resp := _context.PharosClient.WorkItemStateGet(*item.WorkItemStateId)
require.Nil(t, resp.Error)
workItemState := resp.WorkItemState()
require.NotNil(t, workItemState)
assert.Equal(t, constants.ActionDPN, workItemState.Action)
assert.False(t, workItemState.CreatedAt.IsZero())
assert.False(t, workItemState.UpdatedAt.IsZero())
detail := fmt.Sprintf("%s from Pharos", item.ObjectIdentifier)
testIngestRecordWorkItemState(t, _context, workItemState.State, detail)
}
}