Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.uberfire.io;
  
  import java.io.File;
  import java.net.URI;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Random;
 
 import org.junit.Test;
 import  org.uberfire.java.nio.base.options.CommentedOption;
 import  org.uberfire.java.nio.base.version.VersionAttributeView;
 import  org.uberfire.java.nio.file.FileSystem;
 import  org.uberfire.java.nio.file.Path;
 import  org.uberfire.java.nio.file.WatchEvent;
 import  org.uberfire.java.nio.file.WatchService;
 import  org.uberfire.java.nio.file.api.FileSystemProviders;
 import  org.uberfire.java.nio.fs.jgit.JGitFileSystem;
 import  org.uberfire.java.nio.fs.jgit.JGitFileSystemProvider;
 
 import static org.junit.Assert.*;
 
 public class BatchTest {
 
     final static IOService ioService = new IOServiceDotFileImpl();
     private static File path = null;
     static FileSystem fs1;
     static JGitFileSystem fs1Batch;
     static FileSystem fs2;
     static JGitFileSystem fs2Batch;
     static FileSystem fs3;
     static JGitFileSystem fs3Batch;
 
     @BeforeClass
     public static void setup() throws IOException {
          = CommonIOServiceDotFileTest.createTempDirectory();
 
         // XXX this is shaky at best: FileSystemProviders bootstraps the JGit FS in a static initializer.
         //     if anything has referenced it before now, setting this system property will have no effect.
         System.setProperty"org.uberfire.nio.git.dir".getAbsolutePath() );
         ..println".niogit: " + .getAbsolutePath() );
 
         final URI newRepo = URI.create"git://amend-repo-test" );
 
          = .newFileSystemnewReponew HashMap<StringObject>() );
          = (JGitFileSystem) ;
         Path init = .get( URI.create"git://amend-repo-test/init.file" ) );
         .writeinit"setupFS!" );
 
         final URI newRepo2 = URI.create"git://check-amend-repo-test" );
 
          = .newFileSystemnewRepo2new HashMap<StringObject>() {{
             put"init""true" );
         }} );
          = (JGitFileSystem) ;
         init = .get( URI.create"git://check-amend-repo-test/init.file" ) );
         .writeinit"setupFS!" );
 
         final URI newRepo3 = URI.create"git://check-amend-repo-test-2" );
          = .newFileSystemnewRepo3new HashMap<StringObject>() {{
             put"init""true" );
         }} );
          = (JGitFileSystem) ;
         init = .get( URI.create"git://check-amend-repo-test-2/init.file" ) );
         .writeinit"setupFS!" );
     }
 
     @AfterClass
     public static void cleanup() {
         FileUtils.deleteQuietly );
         JGitFileSystemProvider gitFsProvider = (JGitFileSystemProvider) FileSystemProviders.resolveProvider( URI.create"git://whatever" ) );
         gitFsProvider.shutdown();
         FileUtils.deleteQuietlygitFsProvider.getGitRepoContainerDir() );
         gitFsProvider.rescanForExistingRepositories();
     }
 
     @Test
     public void testBatch() throws IOExceptionInterruptedException {
         final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
         final WatchService ws = init.getFileSystem().newWatchService();
 
         .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
         .writeinit"init 2!"new CommentedOption( "User Tester""message2" ) );
         {
             List<WatchEvent<?>> events = ws.poll().pollEvents();
             assertEquals( 1, events.size() );//modify readme
         }
 
         final Path init2 = .get( URI.create"git://amend-repo-test/readme2.txt" ) );
         .writeinit2"init 3!"new CommentedOption( "User Tester""message3" ) );
         {
             List<WatchEvent<?>> events = ws.poll().pollEvents();
             assertEquals( 1, events.size() ); // add file
         }
        .writeinit2"init 4!"new CommentedOption( "User Tester""message4" ) );
        {
            List<WatchEvent<?>> events = ws.poll().pollEvents();
            assertEquals( 1, events.size() );// modify file
        }
        final VersionAttributeView vinit = .getFileAttributeViewinit, VersionAttributeView.class );
        final VersionAttributeView vinit2 = .getFileAttributeViewinit, VersionAttributeView.class );
        assertEquals"init 2!".readAllStringinit ) );
        assertNotNullvinit );
        assertEquals( 2, vinit.readAttributes().history().records().size() );
        assertNotNullvinit2 );
        assertEquals( 2, vinit2.readAttributes().history().records().size() );
        .startBatchnew FileSystem[]{ init.getFileSystem() } );
        final Path path = .get( URI.create"git://amend-repo-test/mybatch" + new Random( 10L ).nextInt() + ".txt" ) );
        final Path path2 = .get( URI.create"git://amend-repo-test/mybatch2" + new Random( 10L ).nextInt() + ".txt" ) );
        .writepath"ooooo!" );
        //init.file event
        assertNotNullws.poll() );
        .writepath"ooooo wdfs fg sdf!" );
        assertNullws.poll() );
        .writepath2"ooooo222!" );
        assertNullws.poll() );
        .writepath2" sdfsdg sdg ooooo222!" );
        assertNullws.poll() );
        .endBatch();
        {
            List<WatchEvent<?>> events = ws.poll().pollEvents();
            assertEquals( 2, events.size() ); //adds files
        }
        final VersionAttributeView v = .getFileAttributeViewpath, VersionAttributeView.class );
        final VersionAttributeView v2 = .getFileAttributeViewpath2, VersionAttributeView.class );
        assertNotNullv );
        assertNotNullv2 );
        assertEquals( 1, v.readAttributes().history().records().size() );
        assertEquals( 1, v2.readAttributes().history().records().size() );
    }
    @Test
    public void testBatch2() throws IOExceptionInterruptedException {
        final Path f1 = .get( URI.create"git://check-amend-repo-test/f1.txt" ) );
        final Path f2 = .get( URI.create"git://check-amend-repo-test/f2.txt" ) );
        final Path f3 = .get( URI.create"git://check-amend-repo-test/f3.txt" ) );
        // XXX: Workaround for UF-70: amend-test-repo has to contain something so it can receive the BATCH
        .writef1"init f1!" );
        .writef2"init f2!" );
        // END workaround
        final WatchService ws = f1.getFileSystem().newWatchService();
        .startBatchnew FileSystem[]{ f1.getFileSystem() } );
        .writef1"f1-u1!" );
        assertNullws.poll() );
        .writef2"f2-u1!" );
        assertNullws.poll() );
        .writef3"f3-u1!" );
        assertNullws.poll() );
        .endBatch();
        {
            List<WatchEvent<?>> events = ws.poll().pollEvents();
            assertEquals( 3, events.size() ); //adds files
            final VersionAttributeView v = .getFileAttributeViewf1, VersionAttributeView.class );
            assertNotNullv );
            assertEquals( 2, v.readAttributes().history().records().size() );
            final VersionAttributeView v2 = .getFileAttributeViewf2, VersionAttributeView.class );
            assertNotNullv2 );
            assertEquals( 2, v2.readAttributes().history().records().size() );
            final VersionAttributeView v3 = .getFileAttributeViewf3, VersionAttributeView.class );
            assertNotNullv3 );
            assertEquals( 1, v3.readAttributes().history().records().size() );
        }
        .startBatchnew FileSystem[]{ f1.getFileSystem() } );
        .writef1"f1-u1!" );
        assertNullws.poll() );
        .writef2"f2-u2!" );
        assertNullws.poll() );
        .writef3"f3-u2!" );
        assertNullws.poll() );
        .endBatch();
        {
            List<WatchEvent<?>> events = ws.poll().pollEvents();
            assertEquals( 2, events.size() ); //adds files
            final VersionAttributeView v = .getFileAttributeViewf1, VersionAttributeView.class );
            assertNotNullv );
            assertEquals( 2, v.readAttributes().history().records().size() );
            final VersionAttributeView v2 = .getFileAttributeViewf2, VersionAttributeView.class );
            assertNotNullv2 );
            assertEquals( 3, v2.readAttributes().history().records().size() );
            final VersionAttributeView v3 = .getFileAttributeViewf3, VersionAttributeView.class );
            assertNotNullv3 );
            assertEquals( 2, v3.readAttributes().history().records().size() );
        }
    }
    @Test
    public void batchTest() throws IOExceptionInterruptedException {
        final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        .endBatch();
        assertFalse.isOnBatch() );
    }
    @Test
    public void justOneFSOnBatchTest() throws IOExceptionInterruptedException {
        Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        init = .get( URI.create"git://check-amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        assertFalse.isOnBatch() );
        .endBatch();
        assertFalse.isOnBatch() );
        assertFalse.isOnBatch() );
    }
    @Test
    public void testInnerBatch() throws IOExceptionInterruptedException {
        Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        init = .get( URI.create"git://check-amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        .endBatch();
        assertTrue.isOnBatch() );
        .endBatch();
        assertFalse.isOnBatch() );
    }
    @Test
        final Path f11 = .get( URI.create"git://check-amend-repo-test/f11.txt" ) );
        // XXX: Workaround for UF-70: amend-test-repo has to contain something so it can receive the BATCH
        .writef11"init f1!" );
        // END workaround
        .startBatchnew FileSystem[]{ f11.getFileSystem() } );
        .writef11"f1-u1!" );
        .endBatch();
        VersionAttributeView v = .getFileAttributeViewf11, VersionAttributeView.class );
        assertNotNullv );
        assertEquals( 2, v.readAttributes().history().records().size() );
        .startBatchnew FileSystem[]{ f11.getFileSystem() } );
        .writef11"f2-u2!" );
        //inner batch (samme commit)
        .startBatchnew FileSystem[]{ f11.getFileSystem() } );
        .writef11"f2-u2 - inner batch!" );
        .writef11"f2-u2 - inner 2 batch!" );
        .endBatch();
        .writef11"f2-u2 - inner batch! last" );
        .endBatch();
        assertEquals"f2-u2 - inner batch! last".readAllStringf11 ) );
        v = .getFileAttributeViewf11, VersionAttributeView.class );
        assertNotNullv );
        assertEquals( 4, v.readAttributes().history().records().size() );
    }
    @Test
        Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        init = .get( URI.create"git://check-amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        .startBatchnew FileSystem[]{  } );
        try {
            .startBatchnew FileSystem[]{  } );
        } catch ( final Exception e ) {
            fail();
        }
        .endBatch();
        .endBatch();
        try {
            .endBatch();
            fail();
        } catch ( final Exception e ) {
        }
    }
    @Test
        Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        init = .get( URI.create"git://check-amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        .endBatch();
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        .endBatch();
    }
    @Test
    public void iCanLockMultipleFS() throws IOExceptionInterruptedException {
        Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        init = .get( URI.create"git://check-amend-repo-test/readme.txt" ) );
        .writeinit"init!"new CommentedOption( "User Tester""message1" ) );
        .startBatchnew FileSystem[]{  } );
        assertTrue.isOnBatch() );
        assertTrue.isOnBatch() );
        .endBatch();
        assertFalse.isOnBatch() );
        assertFalse.isOnBatch() );
    }
    @Test
    public void testDifferentThreads() throws IOExceptionInterruptedException {
        final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!" );
        .startBatchnew FileSystem[]{  } );
        ..println"After start batch" );
        new Thread"second" ) {
            @Override
            public void run() {
                try {
                    ..println"Inner starting" );
                    .startBatchnew FileSystem[]{  } );
                    ..println"Inner after batch" );
                    final OutputStream innerOut = .newOutputStreaminit );
                    for ( int i = 0; i < 100; i++ ) {
                        innerOut.write( ( "sss" + i ).getBytes() );
                    }
                    ..println"Inner after write" );
                    innerOut.close();
                    ..println"Inner after close" );
                    .endBatch();
                    ..println"Inner after end batch" );
                } catch ( Exception ex ) {
                    ex.printStackTrace();
                }
            }
        }.start();
        ..println"After start 2nd Thread" );
        for ( int i = 0; i < 100; i++ ) {
            if ( i % 20 == 0 ) {
                Thread.sleep( 10 );
            }
            .writeinit, ( "sss" + i ).getBytes() );
        }
        ..println"After writes" );
        .endBatch();
        ..println"After end batch" );
    }
    @Test
        final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!" );
        new Thread"second" ) {
            @Override
            public void run() {
                try {
                    ..println"Inner starting" );
                    final OutputStream innerOut = .newOutputStreaminit );
                    for ( int i = 0; i < 100; i++ ) {
                        innerOut.write( ( "sss" + i ).getBytes() );
                    }
                    ..println"Inner after write" );
                    innerOut.close();
                } catch ( Exception ex ) {
                    ex.printStackTrace();
                }
            }
        }.start();
        ..println"After start 2nd Thread" );
        for ( int i = 0; i < 100; i++ ) {
            if ( i % 20 == 0 ) {
                Thread.sleep( 10 );
            }
            .writeinit, ( "sss" + i ).getBytes() );
        }
        ..println"After writes" );
    }
    @Test
    public void testDifferentThreads3() throws IOExceptionInterruptedException {
        final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!" );
        .startBatchnew FileSystem[]{  } );
        ..println"After start batch" );
        final Runnable runnable = new Runnable() {
            @Override
            public void run() {
                try {
                    ..println"Inner starting" );
                    .startBatchnew FileSystem[]{  } );
                    ..println"Inner after batch" );
                    final OutputStream innerOut = .newOutputStreaminit );
                    for ( int i = 0; i < 100; i++ ) {
                        innerOut.write( ( "sss" + i ).getBytes() );
                    }
                    ..println"Inner after write" );
                    innerOut.close();
                    ..println"Inner after close" );
                    .endBatch();
                    ..println"Inner after end batch" );
                } catch ( Exception ex ) {
                    ex.printStackTrace();
                }
            }
        };
        final Thread thread = new Threadrunnable"second" );
        final Thread thread2 = new Threadrunnable"third" );
        thread.start();
        Thread.sleep( 100 );
        thread2.start();
        Thread.sleep( 100 );
        ..println"After start 2nd Thread" );
        for ( int i = 0; i < 100; i++ ) {
            if ( i % 20 == 0 ) {
                Thread.sleep( 10 );
            }
            .writeinit, ( "sss" + i ).getBytes() );
        }
        ..println"After writes" );
        .endBatch();
        ..println"After end batch" );
    }
    @Test
        final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!" );
        .startBatchnew FileSystem[]{  } );
        ..println"After start batch" );
        final Runnable runnable = new Runnable() {
            @Override
            public void run() {
                try {
                    ..println"Inner starting" );
                    final OutputStream innerOut = .newOutputStreaminit );
                    for ( int i = 0; i < 100; i++ ) {
                        innerOut.write( ( "sss" + i ).getBytes() );
                    }
                    ..println"Inner after write" );
                    innerOut.close();
                    ..println"Inner after end batch" );
                } catch ( Exception ex ) {
                    ex.printStackTrace();
                }
            }
        };
        final Thread thread = new Threadrunnable"second" );
        final Thread thread2 = new Threadrunnable"third" );
        thread.start();
        Thread.sleep( 100 );
        thread2.start();
        Thread.sleep( 100 );
        ..println"After start 2nd Thread" );
        for ( int i = 0; i < 100; i++ ) {
            if ( i % 20 == 0 ) {
                Thread.sleep( 10 );
            }
            .writeinit, ( "sss" + i ).getBytes() );
        }
        ..println"After writes" );
        .endBatch();
        ..println"After end batch" );
    }
    @Test
        final Path init = .get( URI.create"git://amend-repo-test/readme.txt" ) );
        .writeinit"init!" );
        final Runnable runnable = new Runnable() {
            @Override
            public void run() {
                try {
                    ..println"Inner starting" );
                    .startBatchnew FileSystem[]{  } );
                    ..println"Inner after batch" );
                    final OutputStream innerOut = .newOutputStreaminit );
                    for ( int i = 0; i < 100; i++ ) {
                        .writeinit, ( "sss" + i ).getBytes() );
                    }
                    ..println"Inner after write" );
                    innerOut.close();
                    ..println"Inner after close" );
                    .endBatch();
                    ..println"Inner after end batch" );
                } catch ( Exception ex ) {
                    ex.printStackTrace();
                }
            }
        };
        final Thread thread = new Threadrunnable"second" );
        final Thread thread2 = new Threadrunnable"third" );
        thread.start();
        Thread.sleep( 100 );
        thread2.start();
        Thread.sleep( 100 );
        ..println"After start 2nd Thread" );
        for ( int i = 0; i < 100; i++ ) {
            if ( i % 20 == 0 ) {
                Thread.sleep( 10 );
            }
            .writeinit, ( "sss" + i ).getBytes() );
        }
        ..println"After writes" );
    }
New to GrepCode? Check out our FAQ X