Skip to content

Commit

Permalink
Addressed Andrew, Praveena and Konstantin comments
Browse files Browse the repository at this point in the history
  • Loading branch information
phughk committed Jan 30, 2018
1 parent 8d35cf4 commit 37e5014
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 27 deletions.
Expand Up @@ -151,7 +151,7 @@ public OnlineBackupContext createContext( String... args ) throws IncorrectUsage


OptionalHostnamePort address = toOptionalHostnamePortFromRawAddress( OptionalHostnamePort address = toOptionalHostnamePortFromRawAddress(
arguments.get( ARG_NAME_BACKUP_SOURCE ) ); arguments.get( ARG_NAME_BACKUP_SOURCE ) );
Path folder = getFolder( arguments ); Path folder = getBackupDirectory( arguments );
String name = arguments.get( ARG_NAME_BACKUP_NAME ); String name = arguments.get( ARG_NAME_BACKUP_NAME );
boolean fallbackToFull = arguments.getBoolean( ARG_NAME_FALLBACK_FULL ); boolean fallbackToFull = arguments.getBoolean( ARG_NAME_FALLBACK_FULL );
boolean doConsistencyCheck = arguments.getBoolean( ARG_NAME_CHECK_CONSISTENCY ); boolean doConsistencyCheck = arguments.getBoolean( ARG_NAME_CHECK_CONSISTENCY );
Expand Down Expand Up @@ -197,7 +197,7 @@ public OnlineBackupContext createContext( String... args ) throws IncorrectUsage
} }
} }


private Path getFolder( Arguments arguments ) throws CommandFailed private Path getBackupDirectory( Arguments arguments ) throws CommandFailed
{ {
Path path = arguments.getMandatoryPath( ARG_NAME_BACKUP_DIRECTORY ); Path path = arguments.getMandatoryPath( ARG_NAME_BACKUP_DIRECTORY );
try try
Expand Down
Expand Up @@ -120,5 +120,8 @@ public InputStream inStream()
public void close() throws IOException public void close() throws IOException
{ {
fileSystemAbstraction.close(); fileSystemAbstraction.close();
inStream().close();
outStream().close();
errorStream().close();
} }
} }
Expand Up @@ -19,15 +19,13 @@
*/ */
package org.neo4j.commandline.admin; package org.neo4j.commandline.admin;


import org.junit.Rule;
import org.junit.Test; import org.junit.Test;


import java.io.ByteArrayOutputStream;
import java.io.Console;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
Expand All @@ -36,12 +34,19 @@
import org.neo4j.backup.impl.OnlineBackupCommandProvider; import org.neo4j.backup.impl.OnlineBackupCommandProvider;
import org.neo4j.backup.impl.ParametrisedOutsideWorld; import org.neo4j.backup.impl.ParametrisedOutsideWorld;
import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.DefaultFileSystemAbstraction;
import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.test.rule.SuppressOutput;


import static org.junit.Assert.assertEquals; import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertThat;


public class BackupUsageTest public class BackupUsageTest
{ {
private static final Path HERE = Paths.get( "." );

@Rule
public SuppressOutput suppressOutput = SuppressOutput.suppressAll();

OnlineBackupCommandProvider onlineBackupCommandProvider = new OnlineBackupCommandProvider(); OnlineBackupCommandProvider onlineBackupCommandProvider = new OnlineBackupCommandProvider();
CommandLocator commandLocator = AugmentedCommandLocator.fromFixedArray( onlineBackupCommandProvider ); CommandLocator commandLocator = AugmentedCommandLocator.fromFixedArray( onlineBackupCommandProvider );


Expand All @@ -52,8 +57,11 @@ public void outputMatchesExpectedForMissingBackupDir() throws UnsupportedEncodin
String output = runBackup(); String output = runBackup();


// then // then
String reason = "Missing argument 'backup-dir'\n\n"; String reason = "Missing argument 'backup-dir'";
assertEquals( reason + BackupHelpOutput.BACKUP_OUTPUT, output ); assertThat( output, containsString( reason ) );

// and
assertThat( output, containsString( BackupHelpOutput.BACKUP_OUTPUT ) );
} }


@Test @Test
Expand All @@ -63,20 +71,24 @@ public void missingBackupName() throws UnsupportedEncodingException
String output = runBackup( "--backup-dir=target" ); String output = runBackup( "--backup-dir=target" );


// then // then
String reason = "Missing argument 'name'\n\n"; String reason = "Missing argument 'name'";
assertEquals( reason + BackupHelpOutput.BACKUP_OUTPUT, output ); assertThat( output, containsString( reason ) );

// and
assertThat( output, containsString( BackupHelpOutput.BACKUP_OUTPUT ) );
} }


@Test @Test
public void incorrectBackupDirectory() throws IOException public void incorrectBackupDirectory() throws IOException
{ {
// when // when
Path backupDirectoryResolved = new File( "." ).toPath().toRealPath().resolve( "non_existing_dir" ); Path backupDirectoryResolved = HERE.toRealPath().resolve( "non_existing_dir" );
String output = runBackup( "--backup-dir=non_existing_dir", "--name=mybackup" ); String output = runBackup( "--backup-dir=non_existing_dir", "--name=mybackup" );


// then // then
String reason = String.format( "command failed: Directory '%s' does not exist.\n", backupDirectoryResolved.toFile().toString() ); String reason = String.format( "command failed: Directory '%s' does not exist.\n", backupDirectoryResolved.toFile().toString() );
assertEquals( reason, output ); assertThat( output, containsString( reason ) );
assertThat( output, not( containsString( BackupHelpOutput.BACKUP_OUTPUT ) ) );
} }


private String runBackup( String... args ) throws UnsupportedEncodingException private String runBackup( String... args ) throws UnsupportedEncodingException
Expand All @@ -86,24 +98,16 @@ private String runBackup( String... args ) throws UnsupportedEncodingException


private String runBackup( boolean debug, String... args ) throws UnsupportedEncodingException private String runBackup( boolean debug, String... args ) throws UnsupportedEncodingException
{ {
ByteArrayOutputStream baos = new ByteArrayOutputStream(); ParametrisedOutsideWorld outsideWorld = // ParametrisedOutsideWorld used for suppressing #close() doing System.exit()
PrintStream printStream = new PrintStream( baos, true, "utf-8" ); new ParametrisedOutsideWorld( System.console(), System.out, System.err, System.in, new DefaultFileSystemAbstraction() );
ParametrisedOutsideWorld outsideWorld = capturableOutputOutsideWorld( printStream );
AdminTool subject = new AdminTool( commandLocator, AugmentedBlockerLocator.fromList(), outsideWorld, debug ); AdminTool subject = new AdminTool( commandLocator, AugmentedBlockerLocator.fromList(), outsideWorld, debug );
Path homeDir = new File( "." ).toPath(); Path homeDir = HERE;
Path configDir = new File( "." ).toPath(); Path configDir = HERE;
List<String> params = new ArrayList(); List<String> params = new ArrayList();
params.add( "backup" ); params.add( "backup" );
params.addAll( Arrays.asList( args ) ); params.addAll( Arrays.asList( args ) );
String[] argArray = params.toArray( new String[params.size()] ); String[] argArray = params.toArray( new String[params.size()] );
subject.execute( homeDir, configDir, argArray ); subject.execute( homeDir, configDir, argArray );
return baos.toString(); return suppressOutput.getErrorVoice().toString() + suppressOutput.getOutputVoice().toString();
}

private ParametrisedOutsideWorld capturableOutputOutsideWorld( PrintStream printStream )
{
Console console = System.console();
FileSystemAbstraction fileSystemAbstraction = new DefaultFileSystemAbstraction();
return new ParametrisedOutsideWorld( console, printStream, printStream, System.in, fileSystemAbstraction );
} }
} }

0 comments on commit 37e5014

Please sign in to comment.