Package com.splunk.shuttl.archiver.usecases

Source Code of com.splunk.shuttl.archiver.usecases.ThawFunctionalTest

// Copyright (C) 2011 Splunk Inc.
//
// Splunk Inc. licenses this file
// to you 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 com.splunk.shuttl.archiver.usecases;

import static com.splunk.shuttl.testutil.TUtilsFile.*;
import static com.splunk.shuttl.testutil.TUtilsFunctional.*;
import static org.testng.AssertJUnit.*;

import java.io.File;
import java.util.Date;

import org.apache.commons.io.FileUtils;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import com.splunk.shuttl.archiver.LocalFileSystemPaths;
import com.splunk.shuttl.archiver.archive.ArchiveConfiguration;
import com.splunk.shuttl.archiver.archive.BucketArchiver;
import com.splunk.shuttl.archiver.archive.BucketShuttlerFactory;
import com.splunk.shuttl.archiver.filesystem.ArchiveFileSystem;
import com.splunk.shuttl.archiver.filesystem.ArchiveFileSystemFactory;
import com.splunk.shuttl.archiver.model.IllegalIndexException;
import com.splunk.shuttl.archiver.model.LocalBucket;
import com.splunk.shuttl.archiver.thaw.BucketThawer;
import com.splunk.shuttl.archiver.thaw.BucketThawerFactory;
import com.splunk.shuttl.archiver.thaw.SplunkIndexesLayer;
import com.splunk.shuttl.archiver.usecases.util.FakeSplunkIndexesLayer;
import com.splunk.shuttl.testutil.TUtilsBucket;
import com.splunk.shuttl.testutil.TUtilsDate;
import com.splunk.shuttl.testutil.TUtilsFile;

@Test(groups = { "functional" })
public class ThawFunctionalTest {

  private String thawIndex;
  private BucketArchiver bucketArchiver;
  private ArchiveFileSystem archiveFileSystem;
  private File thawDirectory;
  private BucketThawer bucketThawer;
  private ArchiveConfiguration config;
  private File archiverData;

  @BeforeMethod
  public void setUp() throws IllegalIndexException {
    thawIndex = "someIndex";
    config = getLocalFileSystemConfiguration();
    archiveFileSystem = ArchiveFileSystemFactory.getWithConfiguration(config);
    archiverData = createDirectory();
    LocalFileSystemPaths localFileSystemPaths = new LocalFileSystemPaths(
        archiverData.getAbsolutePath());
    bucketArchiver = BucketShuttlerFactory
        .createWithConfFileSystemAndLocalPaths(config, archiveFileSystem,
            localFileSystemPaths);
    thawDirectory = TUtilsFile.createDirectory();

    SplunkIndexesLayer splunkIndexesLayer = new FakeSplunkIndexesLayer(
        thawDirectory);

    bucketThawer = BucketThawerFactory
        .createWithConfigAndSplunkSettingsAndLocalFileSystemPaths(config,
            splunkIndexesLayer, localFileSystemPaths);
  }

  @AfterMethod
  public void tearDown() {
    FileUtils.deleteQuietly(thawDirectory);
    FileUtils.deleteQuietly(archiverData);
    tearDownLocalConfig(config);
  }

  public void Thawer_givenOneArchivedBucket_thawArchivedBucket() {
    Date earliest = TUtilsDate.getNowWithoutMillis();
    Date latest = earliest;
    LocalBucket bucket = TUtilsBucket.createBucketWithIndexAndTimeRange(
        thawIndex, earliest, latest);
    archiveBucket(bucket, bucketArchiver);

    assertTrue(isDirectoryEmpty(thawDirectory));
    bucketThawer.thawBuckets(thawIndex, earliest, latest);
    assertExactlyOneDirectoryInThawDirectory();
    String thawedName = thawDirectory.listFiles()[0].getName();
    assertEquals(bucket.getName(), thawedName);
  }

  private static final int HUNDRED_SECONDS = 100000;
  private static final int SECOND = 1000;

  public void Thawer_archivingBucketsInThreeDifferentTimeRanges_filterByOnlyOneOfTheTimeRanges()
      throws Exception {
    Date earliest = TUtilsDate.getNowWithoutMillis();
    Date latest = TUtilsDate.getLaterDate(earliest);
    for (int i = 0; i < 3; i++) {
      Date early = new Date(earliest.getTime() + i * HUNDRED_SECONDS);
      Date later = new Date(early.getTime() + SECOND);
      LocalBucket bucket = TUtilsBucket.createBucketWithIndexAndTimeRange(
          thawIndex, early, later);
      archiveBucket(bucket, bucketArchiver);
      assertFalse(bucket.getDirectory().exists());
    }
    assertTrue(isDirectoryEmpty(thawDirectory));

    bucketThawer.thawBuckets(thawIndex, earliest, latest);
    assertExactlyOneDirectoryInThawDirectory();
  }

  private void assertExactlyOneDirectoryInThawDirectory() {
    File[] filesThawed = thawDirectory.listFiles();
    int bucketsInThawLocation = filesThawed.length;
    assertEquals(1, bucketsInThawLocation);
    assertTrue(filesThawed[0].isDirectory());
  }
}
TOP

Related Classes of com.splunk.shuttl.archiver.usecases.ThawFunctionalTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.