コード例 #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldReturnExpectedListOfFileNamesForEachType() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldReturnExpectedListOfFileNamesForEachType()
        {
            // given
            StoreFileMetadata[] expectedFiles = new StoreFileMetadata[]
            {
                new StoreFileMetadata(_databaseLayout.file("a"), 1),
                new StoreFileMetadata(_databaseLayout.file("b"), 2)
            };
            ExpectedFiles = expectedFiles;

            //when
            File[]          files = _prepareStoreCopyFiles.listReplayableFiles();
            StoreResource[] atomicFilesSnapshot = _prepareStoreCopyFiles.AtomicFilesSnapshot;

            //then
//JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter:
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
            File[] expectedFilesConverted = java.util.expectedFiles.Select(StoreFileMetadata::file).ToArray(File[] ::new);
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
            StoreResource[] exeptedAtomicFilesConverted = java.util.expectedFiles.Select(f => new StoreResource(f.file(), GetRelativePath(f), f.recordSize(), _fileSystemAbstraction)).ToArray(StoreResource[] ::new);
            assertArrayEquals(expectedFilesConverted, files);
            assertEquals(exeptedAtomicFilesConverted.Length, atomicFilesSnapshot.Length);
            for (int i = 0; i < exeptedAtomicFilesConverted.Length; i++)
            {
                StoreResource expected      = exeptedAtomicFilesConverted[i];
                StoreResource storeResource = atomicFilesSnapshot[i];
                assertEquals(expected.Path(), storeResource.Path());
                assertEquals(expected.RecordSize(), storeResource.RecordSize());
            }
        }
コード例 #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldHanldeEmptyListOfFilesForeEachType() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldHanldeEmptyListOfFilesForeEachType()
        {
            ExpectedFiles = new StoreFileMetadata[0];
            File[]          files = _prepareStoreCopyFiles.listReplayableFiles();
            StoreResource[] atomicFilesSnapshot = _prepareStoreCopyFiles.AtomicFilesSnapshot;
            assertEquals(0, Files.Length);
            assertEquals(0, atomicFilesSnapshot.Length);
        }
コード例 #3
0
        private void AddCountStoreFiles(IList <StoreFileMetadata> files)
        {
            IEnumerable <File> countStoreFiles = _neoStores.Counts.allFiles();

            foreach (File countStoreFile in countStoreFiles)
            {
                StoreFileMetadata countStoreFileMetadata = new StoreFileMetadata(countStoreFile, Org.Neo4j.Kernel.impl.store.format.RecordFormat_Fields.NO_RECORD_SIZE);
                Files.Add(countStoreFileMetadata);
            }
        }
コード例 #4
0
 private string GetRelativePath(StoreFileMetadata f)
 {
     try
     {
         return(relativePath(_databaseLayout.databaseDirectory(), f.File()));
     }
     catch (IOException)
     {
         throw new Exception("Failed to create relative path");
     }
 }
コード例 #5
0
        /// <summary>
        /// Trigger store flush (checkpoint) and write <seealso cref="NeoStoreDataSource.listStoreFiles(bool) store files"/> to the
        /// given <seealso cref="StoreWriter"/>.
        /// </summary>
        /// <param name="triggerName"> name of the component asks for store files. </param>
        /// <param name="writer"> store writer to write files to. </param>
        /// <param name="includeLogs"> <code>true</code> if transaction logs should be copied, <code>false</code> otherwise. </param>
        /// <returns> a <seealso cref="RequestContext"/> specifying at which point the store copy started. </returns>
        public virtual RequestContext FlushStoresAndStreamStoreFiles(string triggerName, StoreWriter writer, bool includeLogs)
        {
            try
            {
                string storeCopyIdentifier = Thread.CurrentThread.Name;
                ThrowingAction <IOException> checkPointAction = () =>
                {
                    _monitor.startTryCheckPoint(storeCopyIdentifier);
                    _checkPointer.tryCheckPoint(new SimpleTriggerInfo(triggerName));
                    _monitor.finishTryCheckPoint(storeCopyIdentifier);
                };

                // Copy the store files
                long lastAppliedTransaction;
                StoreCopyCheckPointMutex mutex = _dataSource.StoreCopyCheckPointMutex;
                try
                {
                    using (Resource @lock = mutex.StoreCopy(checkPointAction), ResourceIterator <StoreFileMetadata> files = _dataSource.listStoreFiles(includeLogs))
                    {
                        lastAppliedTransaction = _checkPointer.lastCheckPointedTransactionId();
                        _monitor.startStreamingStoreFiles(storeCopyIdentifier);
                        ByteBuffer temporaryBuffer = ByteBuffer.allocateDirect(( int )ByteUnit.mebiBytes(1));
                        while (Files.MoveNext())
                        {
                            StoreFileMetadata meta = Files.Current;
                            File file       = meta.File();
                            bool isLogFile  = meta.LogFile;
                            int  recordSize = meta.RecordSize();

                            using (ReadableByteChannel fileChannel = _fileSystem.open(file, OpenMode.READ))
                            {
                                long fileSize = _fileSystem.getFileSize(file);
                                DoWrite(writer, temporaryBuffer, file, recordSize, fileChannel, fileSize, storeCopyIdentifier, isLogFile);
                            }
                        }
                    }
                }
                finally
                {
                    _monitor.finishStreamingStoreFiles(storeCopyIdentifier);
                }

                return(anonymous(lastAppliedTransaction));
            }
            catch (IOException e)
            {
                throw new ServerFailureException(e);
            }
        }
コード例 #6
0
        public static int GenerateWeeksWorthOfData(this IImportedDataPointRepository dataPointRepository, IApplicationSettings applicationSettings)
        {
            var totalCount       = 0;
            var typesOfSavedData = 1;
            var daysInWeek       = 7;
            var hoursInDay       = 24;
            var minutesInHour    = 60;
            var readingsInMinute = 12;
            var oneWeekOfData    = daysInWeek * hoursInDay;
            var readingsPerHour  = minutesInHour * readingsInMinute;

            var sqliteFolderLocation = applicationSettings.SqliteStorageFolderLocation;

            for (var fileTypeIndex = 0; fileTypeIndex < typesOfSavedData; fileTypeIndex++)
            {
                for (var fileIndex = 0; fileIndex < oneWeekOfData; fileIndex++)
                {
                    var databaseName = $"VibrationType{fileTypeIndex}{fileIndex}.db";
                    var fileTypeData = new List <ImportedDataPoint>();
                    for (var dataPointIndex = 0; dataPointIndex < readingsPerHour; dataPointIndex++)
                    {
                        fileTypeData.Add(new ImportedDataPoint
                        {
                            TimeStampInUtc = DateTime.Now.AddDays(-7).AddMinutes(5 * dataPointIndex),
                            Bits           = dataPointIndex
                        });
                        totalCount++;
                    }

                    var metadata = new StoreFileMetadata
                    {
                        FileName        = databaseName,
                        RoomNumber      = fileIndex.ToString(),
                        RackIdentifier  = fileIndex,
                        RackCoordinates = new RackCoordinate
                        {
                            X = fileIndex,
                            Y = fileIndex
                        },
                        ConversionKey = fileIndex.ToString()
                    };
                    var json = JsonConvert.SerializeObject(metadata);
                    dataPointRepository.WriteRangeToDatabase(databaseName, fileTypeData);
                    File.WriteAllText(Path.Combine(sqliteFolderLocation, databaseName.GetSqliteAssociatedMetadataFileName()), json);
                }
            }
            return(totalCount);
        }
コード例 #7
0
        private void PlaceMetaDataStoreLast(IList <StoreFileMetadata> files)
        {
            int index = 0;

            foreach (StoreFileMetadata file in files)
            {
                if (_databaseLayout.metadataStore().Equals(file.File()))
                {
                    break;
                }
                index++;
            }
            if (index < Files.Count - 1)
            {
                StoreFileMetadata metaDataStoreFile = Files.RemoveAt(index);
                Files.Add(metaDataStoreFile);
            }
        }
コード例 #8
0
        public override ICollection <StoreFileMetadata> ListStorageFiles()
        {
            IList <StoreFileMetadata> files = new List <StoreFileMetadata>();

            foreach (StoreType type in StoreType.values())
            {
                if (type.Equals(StoreType.COUNTS))
                {
                    AddCountStoreFiles(files);
                }
                else
                {
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.kernel.impl.store.RecordStore<org.neo4j.kernel.impl.store.record.AbstractBaseRecord> recordStore = neoStores.getRecordStore(type);
                    RecordStore <AbstractBaseRecord> recordStore = _neoStores.getRecordStore(type);
                    StoreFileMetadata metadata = new StoreFileMetadata(recordStore.StorageFile, recordStore.RecordSize);
                    Files.Add(metadata);
                }
            }
            return(files);
        }
コード例 #9
0
        public IList <AggregateDataPoint> ImportFolder(string folderLocation)
        {
            var systemSlash = OperatingSystemHelpers.SystemSlash;
            var files       = Directory.GetFiles(folderLocation).Select(file => file.Replace(folderLocation + systemSlash, "")).ToList();
            var dbFiles     = files.Where(file => file.EndsWith(".db")).ToList();

            foreach (var dbFile in dbFiles)
            {
                try {
                    var metadataFileName = dbFile.GetSqliteAssociatedMetadataFileName();
                    var importedData     = _importedDataPointRepository.ReadFromDatabase(folderLocation, dbFile);
                    StoreFileMetadata associatedMetaData = null;
                    if (files.Contains(metadataFileName))
                    {
                        var metaDataFileLocation = Path.Combine(folderLocation, metadataFileName);
                        using (var fileReader = new StreamReader(metaDataFileLocation))
                        {
                            associatedMetaData =
                                JsonConvert.DeserializeObject <StoreFileMetadata>(fileReader.ReadToEnd());
                        }
                    }

                    var aggregateDataPoints = importedData.Select(data => new AggregateDataPoint
                    {
                        TimeStamp       = data.TimeStampInUtc,
                        RawIntensity    = data.Bits,
                        RoomNumber      = associatedMetaData?.RoomNumber ?? String.Empty,
                        RackIdentifier  = associatedMetaData?.RackIdentifier ?? 0,
                        RackCoordinateX = associatedMetaData?.RackCoordinates?.X ?? 0,
                        RackCoordinateY = associatedMetaData?.RackCoordinates?.Y ?? 0,
                        ConversionKey   = Convert.ToDouble(associatedMetaData?.ConversionKey ?? "0")
                    });
                    AddDataPoints(aggregateDataPoints.ToList());
                } catch (Exception e) {
                    throw e;
                }
            }

            return(GetAllDataPoints());
        }
コード例 #10
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: protected void channelRead0(io.netty.channel.ChannelHandlerContext ctx, T request) throws Exception
        protected internal override void ChannelRead0(ChannelHandlerContext ctx, T request)
        {
            _log.debug("Handling request %s", request);
            StoreCopyFinishedResponse.Status responseStatus = StoreCopyFinishedResponse.Status.EUnknown;
            try
            {
                NeoStoreDataSource neoStoreDataSource = _dataSource.get();
                if (!hasSameStoreId(request.expectedStoreId(), neoStoreDataSource))
                {
                    responseStatus = StoreCopyFinishedResponse.Status.EStoreIdMismatch;
                }
                else if (!isTransactionWithinReach(request.requiredTransactionId(), _checkPointerService))
                {
                    responseStatus = StoreCopyFinishedResponse.Status.ETooFarBehind;
                    _checkPointerService.tryAsyncCheckpoint(e => _log.error("Failed to do a checkpoint that was invoked after a too far behind error on store copy request", e));
                }
                else
                {
                    File databaseDirectory = neoStoreDataSource.DatabaseLayout.databaseDirectory();
                    using (ResourceIterator <StoreFileMetadata> resourceIterator = Files(request, neoStoreDataSource))
                    {
                        while (resourceIterator.MoveNext())
                        {
                            StoreFileMetadata storeFileMetadata = resourceIterator.Current;
                            StoreResource     storeResource     = new StoreResource(storeFileMetadata.File(), relativePath(databaseDirectory, storeFileMetadata.File()), storeFileMetadata.RecordSize(), _fs);
                            _storeFileStreamingProtocol.stream(ctx, storeResource);
                        }
                    }
                    responseStatus = StoreCopyFinishedResponse.Status.Success;
                }
            }
            finally
            {
                _storeFileStreamingProtocol.end(ctx, responseStatus);
                _protocol.expect(CatchupServerProtocol.State.MESSAGE_TYPE);
            }
        }
コード例 #11
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldListMetaDataStoreLastWithTxLogs() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldListMetaDataStoreLastWithTxLogs()
        {
            StoreFileMetadata fileMetadata = Iterators.last(_neoStoreDataSource.listStoreFiles(true));

            assertEquals(fileMetadata.File(), _neoStoreDataSource.DatabaseLayout.metadataStore());
        }