diff --git a/.gitignore b/.gitignore index 0af00ca9e8..4d18d56eb7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,31 @@ **/node_modules/ **/*.log + +# Logs +logs +*.log + +coverage + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +build + +# Dependency directory +# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git +node_modules diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..c215b40358 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: node_js +node_js: + - "4" + - "5" + +branches: + only: + - master + +before_install: + - npm i -g npm + # Workaround for a permissions issue with Travis virtual machine images +script: + - npm test diff --git a/README.md b/README.md index 5ddb32fa4a..44d32318fb 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ js-ipfs -========= +======= + +[![](https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square)](http://ipn.io) [[![](https://img.shields.io/badge/freenode-%23ipfs-blue.svg?style=flat-square)](http://webchat.freenode.net/?channels=%23ipfs) ![Build Status](https://travis-ci.org/diasdavid/js-ipfs.svg?style=flat-square)](https://travis-ci.org/diasdavid/js-ipfs) ![](https://img.shields.io/badge/coverage-%3F-yellow.svg?style=flat-square) [![Dependency Status](https://david-dm.org/diasdavid/js-ipfs.svg?style=flat-square)](https://david-dm.org/diasdavid/js-ipfs) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard) > IPFS JavaScript implementation entry point and roadmap # Description -This repo will contain the entry point for the JavaScript implementation of IPFS spec, similar to [go-ipfs](https://github.com/ipfs/go-ipfs). Right now, it holds the roadmap for the development of modules for js-ipfs, as well as their current state. +This repo will contain the entry point for the JavaScript implementation of IPFS spec, similar to [go-ipfs](https://github.com/ipfs/go-ipfs). We are building js-ipfs because it will inform how go-ipfs works, separate concerns, and allow a complete in-browser-tab implementation with no install friction. Most of the work for IPFS does happen elsewhere, but this is an equally important part of our roadmap to lead to a permanent, IPFSed web. @@ -21,17 +23,65 @@ IPFS implementation in JavaScript is a work in progress. As such, there's a few # Usage -> **Not ready for prime time yet** +> **Disclamer: Currently, js-ipfs is not a full IPFS node, it delegates all of its operations to a IPFS node available in the network, see "Getting jsipfs ready" below for more details. + +### Installation + +```bash +$ npm i ipfs --save +``` + +```JavaScript +var IPFS = require('ipfs') + +var node = new IPFS() +``` + +### Command line tool + +In order to use js-ipfs as a CLI, you must install it with the -g flag. + +```bash +$ npm i ipfs -g +``` + +The cli is availble through `jsipfs` in your terminal + +### API + + +# Project structure + +``` +┌───┐ ┌───────────────┐ ┌──────────────┐ +│CLI│───▶│ HTTP API ├───▶│IPFS Node Impl│ +└───┘ └───────────────┘ └──────────────┘ + △ △ + └──────────┬─────────┘ + │ + ┌─────┐ + │Tests│ + └─────┘ +``` + +# Roadmap for the full IPFS implementation in JavaScript -# Roadmap - **Network layer** - The network layer of IPFS is now known as libp2p, follow https://github.com/diasdavid/js-libp2p - **Exchange** - [ ] [js-bitswap](https://github.com/diasdavid/js-bitswap). [![](https://img.shields.io/badge/discuss--blue.svg?style=flat-square)](https://github.com/ipfs/js-ipfs/issues/17)![](https://img.shields.io/badge/status-has%20not%20started%20yet-brown.svg?style=flat-square) + - [ ] [js-ipfs-repo](https://github.com/ipfs/js-ipfs-repo) + - [ ] [keys](https://github.com/ipfs/js-ipfs-repo/issues/4) + - [ ] [version](https://github.com/ipfs/js-ipfs-repo/issues/5) + - [ ] [datastore](https://github.com/ipfs/js-ipfs-repo/issues/6) + - [ ] [config](https://github.com/ipfs/js-ipfs-repo/issues/7) + - [ ] [logs](https://github.com/ipfs/js-ipfs-repo/issues/8) + - [ ] [locks](https://github.com/ipfs/js-ipfs-repo/issues/9) - [x] MerkleDAG node implementation (needs IPLD). - [x] [js-ipld](https://github.com/diasdavid/js-ipld) ![](https://img.shields.io/badge/status-in%20progress-yellow.svg?style=flat-square) - [x] [js-merkledag-store](https://github.com/diasdavid/js-merkledag-store) ![](https://img.shields.io/badge/status-in%20progress-yellow.svg?style=flat-square) + - [ ] js-ipfs [follow the roadmap](https://github.com/ipfs/pm/blob/js-ipfs/roadmap/ROADMAP.js-ipfs.md) - [**Spec**](https://github.com/ipfs/specs/tree/master/protocol/network) ![](https://img.shields.io/badge/status-in%20progress-yellow.svg?style=flat-square) ### status badges diff --git a/graphs/arch.monopic b/graphs/arch.monopic new file mode 100644 index 0000000000..5dae163b8d Binary files /dev/null and b/graphs/arch.monopic differ diff --git a/graphs/arch.txt b/graphs/arch.txt new file mode 100644 index 0000000000..29871aa032 --- /dev/null +++ b/graphs/arch.txt @@ -0,0 +1,9 @@ +┌───┐ ┌───────────────┐ ┌──────────────┐ +│CLI│───▶│ HTTP API ├───▶│IPFS Node Impl│ +└───┘ └───────────────┘ └──────────────┘ + △ △ + └──────────┬─────────┘ + │ + ┌─────┐ + │Tests│ + └─────┘ \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000000..45b9b15736 --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "js-ipfs", + "version": "0.0.1", + "description": "JavaScript implementation of the IPFS specification", + "bin": { + "jsipfs": "src/cli/bin.js" + }, + "main": "src/index.js", + "scripts": { + "lint": "standard", + "coverage": "istanbul cover --print both -- _mocha tests/*-test.js", + "test": "mocha tests/*-test.js" + }, + "pre-commit": [ + "lint" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/ipfs/js-ipfs.git" + }, + "keywords": [ + "IPFS" + ], + "author": "David Dias ", + "license": "MIT", + "bugs": { + "url": "https://github.com/ipfs/js-ipfs/issues" + }, + "homepage": "https://github.com/ipfs/js-ipfs#readme", + "devDependencies": { + "chai": "^3.4.1", + "ipfsd-ctl": "^0.6.1", + "istanbul": "^0.4.1", + "mocha": "^2.3.4", + "ncp": "^2.0.0", + "pre-commit": "^1.1.2", + "rimraf": "^2.4.4", + "standard": "^5.3.1" + }, + "dependencies": { + "hapi": "^11.1.2", + "ipfs-api": "^2.7.0", + "ipfs-repo": "^0.1.0", + "peer-id": "^0.4.0", + "peer-info": "^0.4.0", + "ronin": "^0.3.11" + } +} diff --git a/src/cli/bin.js b/src/cli/bin.js new file mode 100755 index 0000000000..05885ce332 --- /dev/null +++ b/src/cli/bin.js @@ -0,0 +1,11 @@ +#! /usr/bin/env node + +var ronin = require('ronin') + +var cli = ronin(__dirname) + +cli.run() + +// cli.autoupdate(function () { +// cli.run() +// }) diff --git a/src/cli/commands/add.js b/src/cli/commands/add.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/add.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/cat.js b/src/cli/commands/cat.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/cat.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/commands.js b/src/cli/commands/commands.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/commands.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/daemon.js b/src/cli/commands/daemon.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/daemon.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/dns.js b/src/cli/commands/dns.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/dns.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/get.js b/src/cli/commands/get.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/get.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/id.js b/src/cli/commands/id.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/id.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/init.js b/src/cli/commands/init.js new file mode 100644 index 0000000000..c669732925 --- /dev/null +++ b/src/cli/commands/init.js @@ -0,0 +1,31 @@ +var Command = require('ronin').Command +// var help = require('../src/help-menu.js') + +module.exports = Command.extend({ + desc: 'Initialize ipfs local configuration', + + // help: help, + + options: { + bits: { + type: 'number', + alias: 'b', + default: '2048', + desc: 'Number of bits to use in the generated RSA private key (defaults to 2048)' + }, + force: { + alias: 'f', + type: 'boolean', + desc: 'Overwrite existing config (if it exists)' + }, + 'empty-repo': { + alias: 'e', + type: 'boolean', + desc: 'Don\'t add and pin help files to the local storage' + } + }, + + run: function (name) { + console.log('NA - https://github.com/ipfs/js-ipfs/tree/jsipfs#getting-jsipfs-ready') + } +}) diff --git a/src/cli/commands/ls.js b/src/cli/commands/ls.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/ls.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/mount.js b/src/cli/commands/mount.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/mount.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/ping.js b/src/cli/commands/ping.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/ping.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/refs.js b/src/cli/commands/refs.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/refs.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/repo/gc.js b/src/cli/commands/repo/gc.js new file mode 100644 index 0000000000..a85298d461 --- /dev/null +++ b/src/cli/commands/repo/gc.js @@ -0,0 +1,12 @@ +var Command = require('ronin').Command +// var IPFS = require('../../ipfs-core') + +module.exports = Command.extend({ + desc: '', + + options: { + }, + + run: function (name) { + } +}) diff --git a/src/cli/commands/repo/init.js b/src/cli/commands/repo/init.js new file mode 100644 index 0000000000..a85298d461 --- /dev/null +++ b/src/cli/commands/repo/init.js @@ -0,0 +1,12 @@ +var Command = require('ronin').Command +// var IPFS = require('../../ipfs-core') + +module.exports = Command.extend({ + desc: '', + + options: { + }, + + run: function (name) { + } +}) diff --git a/src/cli/commands/repo/version.js b/src/cli/commands/repo/version.js new file mode 100644 index 0000000000..f3800e0e09 --- /dev/null +++ b/src/cli/commands/repo/version.js @@ -0,0 +1,19 @@ +var Command = require('ronin').Command +var IPFS = require('../../../ipfs-core') + +module.exports = Command.extend({ + desc: 'Shows IPFS repo version information', + + options: { + }, + + run: function (name) { + var node = new IPFS() + node.repo.version(function (err, version) { + if (err) { + return console.error(err) + } + console.log(version) + }) + } +}) diff --git a/src/cli/commands/resolve.js b/src/cli/commands/resolve.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/resolve.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/update.js b/src/cli/commands/update.js new file mode 100644 index 0000000000..deedf71f28 --- /dev/null +++ b/src/cli/commands/update.js @@ -0,0 +1,7 @@ +var Command = require('ronin').Command + +module.exports = Command.extend({ + desc: '', + + run: function (name) {} +}) diff --git a/src/cli/commands/version.js b/src/cli/commands/version.js new file mode 100644 index 0000000000..34cf53e9c5 --- /dev/null +++ b/src/cli/commands/version.js @@ -0,0 +1,32 @@ +var Command = require('ronin').Command +var IPFS = require('../../ipfs-core') + +module.exports = Command.extend({ + desc: 'Shows IPFS version information', + + options: { + number: { + alias: 'n', + type: 'boolean', + default: false + }, + commit: { + type: 'boolean', + default: false + }, + repo: { + type: 'boolean', + default: false + } + }, + + run: function (name) { + var node = new IPFS() + node.version(function (err, version) { + if (err) { + return console.error(err) + } + console.log(version) + }) + } +}) diff --git a/src/help-menu.js b/src/help-menu.js new file mode 100644 index 0000000000..914865bb25 --- /dev/null +++ b/src/help-menu.js @@ -0,0 +1,14 @@ +module.exports = function help () { + var help = ['Usage: ' + this.programName + ' ' + this.name + ' [OPTIONS]'] + help.push('\n\nOPTIONS:\n\n') + var options = this.options + Object.keys(options).forEach(function (key) { + var line = ' ' + line = line + '-' + options[key].alias + ', --' + key + '\t' + line = line + options[key].type + '\t' + line = line + '- ' + options[key].desc + help.push(line + '\n') + }) + + return help +} diff --git a/src/http-api/index.js b/src/http-api/index.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/ipfs-core/config.js b/src/ipfs-core/config.js new file mode 100644 index 0000000000..1bcfce9dd7 --- /dev/null +++ b/src/ipfs-core/config.js @@ -0,0 +1,5 @@ +var os = require('os') + +exports = module.exports + +exports.repoPath = process.env.IPFS_PATH || os.homedir() + '/.ipfs' diff --git a/src/ipfs-core/index.js b/src/ipfs-core/index.js new file mode 100644 index 0000000000..2329d6bd25 --- /dev/null +++ b/src/ipfs-core/index.js @@ -0,0 +1,78 @@ +// var ipfsAPIclt = require('ipfs-api') +// var extend = require('extend') +// var PeerId = require('peer-id') +// var PeerInfo = require('peer-info') +var config = require('./config') +var IPFSRepo = require('ipfs-repo') + +exports = module.exports = IPFS +exports.config = config + +function IPFS () { + var self = this + + if (!(self instanceof IPFS)) { + throw new Error('Must be instantiated with new') + } + + var opts = { + url: 'public-writable-node' + } + + if (process.env.NODE_ENV === 'dev') { + opts.url = '/ip4/127.0.0.1/tcp/5001' + } + + if (process.env.NODE_ENV === 'test') { + opts.url = process.env.APIURL + } + + // var api = ipfsAPIclt(config.url) + // extend(self, api) + + var repo = new IPFSRepo(config.repoPath) + + self.daemon = function (callback) { + // 1. read repo to get peer data + } + + self.version = function (opts, callback) { + if (typeof opts === 'function') { + callback = opts + opts = {} + } + + if (!repo.exists()) { + callback(new Error('Repo does not exist, you must init repo first')) + } else { repo.load() } + + repo.config.read(function (err, config) { + if (err) { + return callback(err) + } + callback(null, config.Version.Current) + }) + } + + self.id = function (format, callback) {} + + self.repo = { + init: function (bits, force, empty, callback) { + // 1. check if repo already exists + }, + + version: function (opts, callback) { + if (typeof opts === 'function') { + callback = opts + opts = {} + } + if (!repo.exists()) { + callback(new Error('Repo does not exist, you must init repo first')) + } else { repo.load() } + + repo.version.read(callback) + }, + + gc: function () {} + } +} diff --git a/tests/jsipfs-test.js b/tests/jsipfs-test.js new file mode 100644 index 0000000000..872993ccbd --- /dev/null +++ b/tests/jsipfs-test.js @@ -0,0 +1,49 @@ +/* globals describe, before, after, it*/ + +var expect = require('chai').expect +var ncp = require('ncp').ncp +var rimraf = require('rimraf') + +// var IPFS = require('../src/ipfs-core') + +describe('IPFS Repo Tests', function () { + var testRepoPath = __dirname + '/test-repo' + var date = Date.now().toString() + var repoPath = testRepoPath + date + var node + + before(function (done) { + ncp(testRepoPath, repoPath, function (err) { + if (err) { + expect(err).to.equal(null) + } + done() + }) + }) + + after(function (done) { + rimraf(repoPath, function (err) { + if (err) { + expect(err).to.equal(null) + } + done() + }) + }) + + it('start a new node', function (done) { + process.env.IPFS_PATH = repoPath + var IPFS = require('../src/ipfs-core') + + node = new IPFS() + done() + }) + + it('check repo version', function (done) { + node.repo.version(function (err, version) { + expect(err).to.equal(null) + expect(version).to.be.a('string') + expect(Number(version)).to.be.a('number') + done() + }) + }) +}) diff --git a/tests/test-repo/blocks/1220120f/1220120f6af601d46e10b2d2e11ed71c55d25f3042c22501e41d1246e7a1e9d3d8ec.data b/tests/test-repo/blocks/1220120f/1220120f6af601d46e10b2d2e11ed71c55d25f3042c22501e41d1246e7a1e9d3d8ec.data new file mode 100644 index 0000000000..389e111776 --- /dev/null +++ b/tests/test-repo/blocks/1220120f/1220120f6af601d46e10b2d2e11ed71c55d25f3042c22501e41d1246e7a1e9d3d8ec.data @@ -0,0 +1,28 @@ + +Hello and Welcome to IPFS! + +██╗██████╗ ███████╗███████╗ +██║██╔══██╗██╔════╝██╔════╝ +██║██████╔╝█████╗ ███████╗ +██║██╔═══╝ ██╔══╝ ╚════██║ +██║██║ ██║ ███████║ +╚═╝╚═╝ ╚═╝ ╚══════╝ + +If you're seeing this, you have successfully installed +IPFS and are now interfacing with the ipfs merkledag! + + ------------------------------------------------------- +| Warning: | +| This is alpha software. Use at your own discretion! | +| Much is missing or lacking polish. There are bugs. | +| Not yet secure. Read the security notes for more. | + ------------------------------------------------------- + +Check out some of the other files in this directory: + + ./about + ./help + ./quick-start <-- usage examples + ./readme <-- this file + ./security-notes + \ No newline at end of file diff --git a/tests/test-repo/blocks/122031d6/122031d6da265092f1b03fec969243fdcf095c1d219356cdf538ffce705a52d5738d.data b/tests/test-repo/blocks/122031d6/122031d6da265092f1b03fec969243fdcf095c1d219356cdf538ffce705a52d5738d.data new file mode 100644 index 0000000000..5ea0edda6f Binary files /dev/null and b/tests/test-repo/blocks/122031d6/122031d6da265092f1b03fec969243fdcf095c1d219356cdf538ffce705a52d5738d.data differ diff --git a/tests/test-repo/blocks/122031e7/122031e7a41c15d03feb8cd793c3348ea3b310512d7767a9abfbd7a928a85e977173.data b/tests/test-repo/blocks/122031e7/122031e7a41c15d03feb8cd793c3348ea3b310512d7767a9abfbd7a928a85e977173.data new file mode 100644 index 0000000000..ecce1053f6 --- /dev/null +++ b/tests/test-repo/blocks/122031e7/122031e7a41c15d03feb8cd793c3348ea3b310512d7767a9abfbd7a928a85e977173.data @@ -0,0 +1,4 @@ +5 +" ׾F_uؔlzS?|ڲPc@ js-ipfs-repo + + \ No newline at end of file diff --git a/tests/test-repo/blocks/12203628/12203628a4a19525dd84bbbffe132ec0b0d3be3528fbbcc814feb7f2fbf71ca06162.data b/tests/test-repo/blocks/12203628/12203628a4a19525dd84bbbffe132ec0b0d3be3528fbbcc814feb7f2fbf71ca06162.data new file mode 100644 index 0000000000..bbe6bda78d Binary files /dev/null and b/tests/test-repo/blocks/12203628/12203628a4a19525dd84bbbffe132ec0b0d3be3528fbbcc814feb7f2fbf71ca06162.data differ diff --git a/tests/test-repo/blocks/12204a5a/12204a5a95586f52e25811cf214677160e64383755a8c5163ba3c053c3b65777ed16.data b/tests/test-repo/blocks/12204a5a/12204a5a95586f52e25811cf214677160e64383755a8c5163ba3c053c3b65777ed16.data new file mode 100644 index 0000000000..4145619655 --- /dev/null +++ b/tests/test-repo/blocks/12204a5a/12204a5a95586f52e25811cf214677160e64383755a8c5163ba3c053c3b65777ed16.data @@ -0,0 +1,4 @@ + +ys# js-ipfs-repo +Implementation of the IPFS repo spec (https://github.com/ipfs/specs/tree/master/repo) in JavaScript +s \ No newline at end of file diff --git a/tests/test-repo/blocks/12205200/12205200cc6b6f79e1588480d9f9016ccadfda3d8bc7d2f8cdf302aa51dae8dae9da.data b/tests/test-repo/blocks/12205200/12205200cc6b6f79e1588480d9f9016ccadfda3d8bc7d2f8cdf302aa51dae8dae9da.data new file mode 100644 index 0000000000..10aa2ae4f1 Binary files /dev/null and b/tests/test-repo/blocks/12205200/12205200cc6b6f79e1588480d9f9016ccadfda3d8bc7d2f8cdf302aa51dae8dae9da.data differ diff --git a/tests/test-repo/blocks/122052c6/122052c63c7775396b3f82c639977a7223c2d96a9f70b5fd8b1d513f8c5b69dcaed4.data b/tests/test-repo/blocks/122052c6/122052c63c7775396b3f82c639977a7223c2d96a9f70b5fd8b1d513f8c5b69dcaed4.data new file mode 100644 index 0000000000..951bfe0400 --- /dev/null +++ b/tests/test-repo/blocks/122052c6/122052c63c7775396b3f82c639977a7223c2d96a9f70b5fd8b1d513f8c5b69dcaed4.data @@ -0,0 +1,23 @@ + + IPFS Alpha Security Notes + +We try hard to ensure our system is safe and robust, but all software +has bugs, especially new software. This distribution is meant to be an +alpha preview, don't use it for anything mission critical. + +Please note the following: + +- This is alpha software and has not been audited. It is our goal + to conduct a proper security audit once we close in on a 1.0 release. + +- ipfs is a networked program, and may have serious undiscovered + vulnerabilities. It is written in Go, and we do not execute any + user provided data. But please point any problems out to us in a + github issue, or email security@ipfs.io privately. + +- ipfs uses encryption for all communication, but it's NOT PROVEN SECURE + YET! It may be totally broken. For now, the code is included to make + sure we benchmark our operations with encryption in mind. In the future, + there will be an "unsafe" mode for high performance intranet apps. + If this is a blocking feature for you, please contact us. + \ No newline at end of file diff --git a/tests/test-repo/blocks/12205994/122059948439065f29619ef41280cbb932be52c56d99c5966b65e0111239f098bbef.data b/tests/test-repo/blocks/12205994/122059948439065f29619ef41280cbb932be52c56d99c5966b65e0111239f098bbef.data new file mode 100644 index 0000000000..9553a942db --- /dev/null +++ b/tests/test-repo/blocks/12205994/122059948439065f29619ef41280cbb932be52c56d99c5966b65e0111239f098bbef.data @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/tests/test-repo/blocks/122062ce/122062ce1f2c91a13a97b596e873b5a3346a644605d7614dca53cd3a59f7385a8abb.data b/tests/test-repo/blocks/122062ce/122062ce1f2c91a13a97b596e873b5a3346a644605d7614dca53cd3a59f7385a8abb.data new file mode 100644 index 0000000000..2dd80560a2 --- /dev/null +++ b/tests/test-repo/blocks/122062ce/122062ce1f2c91a13a97b596e873b5a3346a644605d7614dca53cd3a59f7385a8abb.data @@ -0,0 +1,114 @@ + +  # 0.1 - Quick Start + +This is a set of short examples with minimal explanation. It is meant as +a "quick start". Soon, we'll write a longer tour :-) + + +Add a file to ipfs: + + echo "hello world" >hello + ipfs add hello + + +View it: + + ipfs cat + + +Try a directory: + + mkdir foo + mkdir foo/bar + echo "baz" > foo/baz + echo "baz" > foo/bar/baz + ipfs add -r foo + + +View things: + + ipfs ls + ipfs ls /bar + ipfs cat /baz + ipfs cat /bar/baz + ipfs cat /bar + ipfs ls /baz + + +References: + + ipfs refs + ipfs refs -r + ipfs refs --help + + +Get: + + ipfs get foo2 + diff foo foo2 + + +Objects: + + ipfs object get + ipfs object get /foo2 + ipfs object --help + + +Pin + GC: + + ipfs pin -r + ipfs gc + ipfs ls + ipfs unpin -r + ipfs gc + + +Daemon: + + ipfs daemon (in another terminal) + ipfs id + + +Network: + + (must be online) + ipfs swarm peers + ipfs id + ipfs cat + + +Mount: + + (warning: fuse is finicky!) + ipfs mount + cd /ipfs/< + + +Tool: + + ipfs version + ipfs update + ipfs commands + ipfs config --help + open http://localhost:5001/webui + + +Browse: + + webui: + + http://localhost:5001/webui + + video: + + http://localhost:8080/ipfs/QmVc6zuAneKJzicnJpfrqCH9gSy6bz54JhcypfJYhGUFQu/play#/ipfs/QmTKZgRNwDNZwHtJSjCp6r5FYefzpULfy37JvMt9DwvXse + + images: + + http://localhost:8080/ipfs/QmZpc3HvfjEXvLWGQPWbHk3AjD5j8NEN4gmFN8Jmrd5g83/cs + + markdown renderer app: + + http://localhost:8080/ipfs/QmX7M9CiYXjVeFnkfVGf3y5ixTZ2ACeSGyL1vBJY1HvQPp/mdown + \ No newline at end of file diff --git a/tests/test-repo/blocks/12206781/122067817186b8ff365c758f387e3ae7f28fa9367ee167c312e6d65a2e02e81ab815.data b/tests/test-repo/blocks/12206781/122067817186b8ff365c758f387e3ae7f28fa9367ee167c312e6d65a2e02e81ab815.data new file mode 100644 index 0000000000..a8f98693b7 Binary files /dev/null and b/tests/test-repo/blocks/12206781/122067817186b8ff365c758f387e3ae7f28fa9367ee167c312e6d65a2e02e81ab815.data differ diff --git a/tests/test-repo/blocks/12207028/122070286b9afa6620a66f715c7020d68af3d10e1a497971629c07606bfdb812303d.data b/tests/test-repo/blocks/12207028/122070286b9afa6620a66f715c7020d68af3d10e1a497971629c07606bfdb812303d.data new file mode 100644 index 0000000000..74de75af61 Binary files /dev/null and b/tests/test-repo/blocks/12207028/122070286b9afa6620a66f715c7020d68af3d10e1a497971629c07606bfdb812303d.data differ diff --git a/tests/test-repo/blocks/1220709b/1220709b2dcc5f6a90ad64d6fe3a5d202a72b057d1c7f2e682d0776a5363e2cca974.data b/tests/test-repo/blocks/1220709b/1220709b2dcc5f6a90ad64d6fe3a5d202a72b057d1c7f2e682d0776a5363e2cca974.data new file mode 100644 index 0000000000..3a99c365f0 --- /dev/null +++ b/tests/test-repo/blocks/1220709b/1220709b2dcc5f6a90ad64d6fe3a5d202a72b057d1c7f2e682d0776a5363e2cca974.data @@ -0,0 +1,3 @@ +4 +" Y9_)a˹2RmŖke9 js-ipfs-repo + \ No newline at end of file diff --git a/tests/test-repo/blocks/12207fb8/12207fb898b5d7be46d85feb75d894e16cfa9a7ae5533f8e997cdab2ebadd7506340.data b/tests/test-repo/blocks/12207fb8/12207fb898b5d7be46d85feb75d894e16cfa9a7ae5533f8e997cdab2ebadd7506340.data new file mode 100644 index 0000000000..ee87b9db01 --- /dev/null +++ b/tests/test-repo/blocks/12207fb8/12207fb898b5d7be46d85feb75d894e16cfa9a7ae5533f8e997cdab2ebadd7506340.data @@ -0,0 +1,4 @@ +0 +" ,Qv3k>\IzxEElM/fLICENSE1 +" JZXoRX!Fwd87U;SöWw README.md{ + \ No newline at end of file diff --git a/tests/test-repo/blocks/12208b87/12208b872ca4ee517608331696dd6b3e5cf3497a7845ee8f94456ccf4d1d2f6602b5.data b/tests/test-repo/blocks/12208b87/12208b872ca4ee517608331696dd6b3e5cf3497a7845ee8f94456ccf4d1d2f6602b5.data new file mode 100644 index 0000000000..3da92595c2 --- /dev/null +++ b/tests/test-repo/blocks/12208b87/12208b872ca4ee517608331696dd6b3e5cf3497a7845ee8f94456ccf4d1d2f6602b5.data @@ -0,0 +1,24 @@ + +The MIT License (MIT) + +Copyright (c) 2015 IPFS + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + \ No newline at end of file diff --git a/tests/test-repo/blocks/122090c0/122090c07a7795c1193510a696d1fdfc0f1e4947cff8e422610996e609dbcb976598.data b/tests/test-repo/blocks/122090c0/122090c07a7795c1193510a696d1fdfc0f1e4947cff8e422610996e609dbcb976598.data new file mode 100644 index 0000000000..71be805f1e --- /dev/null +++ b/tests/test-repo/blocks/122090c0/122090c07a7795c1193510a696d1fdfc0f1e4947cff8e422610996e609dbcb976598.data @@ -0,0 +1,9 @@ + +Some helpful resources for finding your way around ipfs: + +- quick-start: a quick show of various ipfs features. +- ipfs commands: a list of all commands +- ipfs --help: every command describes itself +- https://github.com/ipfs/go-ipfs -- the src repository +- #ipfs on irc.freenode.org -- the community irc channel + \ No newline at end of file diff --git a/tests/test-repo/blocks/1220929a/1220929a303c39da8a0b67c09697462f687a00c638bcb580feae06452e0c1f20b4.data b/tests/test-repo/blocks/1220929a/1220929a303c39da8a0b67c09697462f687a00c638bcb580feae06452e0c1f20b4.data new file mode 100644 index 0000000000..62d1c2979b --- /dev/null +++ b/tests/test-repo/blocks/1220929a/1220929a303c39da8a0b67c09697462f687a00c638bcb580feae06452e0c1f20b4.data @@ -0,0 +1,8 @@ + +Come hang out in our IRC chat room if you have any questions. + +Contact the ipfs dev team: +- Bugs: https://github.com/ipfs/go-ipfs/issues +- Help: irc.freenode.org/#ipfs +- Email: dev@ipfs.io + \ No newline at end of file diff --git a/tests/test-repo/blocks/1220933b/1220933b41d37fd4508cdff45930dff56baef91c7dc345e73d049ab570abe10dfbb9.data b/tests/test-repo/blocks/1220933b/1220933b41d37fd4508cdff45930dff56baef91c7dc345e73d049ab570abe10dfbb9.data new file mode 100644 index 0000000000..d899663bf7 Binary files /dev/null and b/tests/test-repo/blocks/1220933b/1220933b41d37fd4508cdff45930dff56baef91c7dc345e73d049ab570abe10dfbb9.data differ diff --git a/tests/test-repo/blocks/1220a52c/1220a52c3602030cb912edfe4de97002fdadf9d45666c3be122a2efb5db93c1d5fa6.data b/tests/test-repo/blocks/1220a52c/1220a52c3602030cb912edfe4de97002fdadf9d45666c3be122a2efb5db93c1d5fa6.data new file mode 100644 index 0000000000..627ffcdf87 --- /dev/null +++ b/tests/test-repo/blocks/1220a52c/1220a52c3602030cb912edfe4de97002fdadf9d45666c3be122a2efb5db93c1d5fa6.data @@ -0,0 +1,55 @@ + +  + IPFS -- Inter-Planetary File system + +IPFS is a global, versioned, peer-to-peer filesystem. It combines good ideas +from Git, BitTorrent, Kademlia, SFS, and the Web. It is like a single bit- +torrent swarm, exchanging git objects. IPFS provides an interface as simple +as the HTTP web, but with permanence built in. You can also mount the world +at /ipfs. + +IPFS is a protocol: +- defines a content-addressed file system +- coordinates content delivery +- combines Kademlia + BitTorrent + Git + +IPFS is a filesystem: +- has directories and files +- mountable filesystem (via FUSE) + +IPFS is a web: +- can be used to view documents like the web +- files accessible via HTTP at `http://ipfs.io/` +- browsers or extensions can learn to use `ipfs://` directly +- hash-addressed content guarantees authenticity + +IPFS is modular: +- connection layer over any network protocol +- routing layer +- uses a routing layer DHT (kademlia/coral) +- uses a path-based naming service +- uses bittorrent-inspired block exchange + +IPFS uses crypto: +- cryptographic-hash content addressing +- block-level deduplication +- file integrity + versioning +- filesystem-level encryption + signing support + +IPFS is p2p: +- worldwide peer-to-peer file transfers +- completely decentralized architecture +- **no** central point of failure + +IPFS is a cdn: +- add a file to the filesystem locally, and it's now available to the world +- caching-friendly (content-hash naming) +- bittorrent-based bandwidth distribution + +IPFS has a name service: +- IPNS, an SFS inspired name system +- global namespace based on PKI +- serves to build trust chains +- compatible with other NSes +- can map DNS, .onion, .bit, etc to IPNS + \ No newline at end of file diff --git a/tests/test-repo/blocks/1220c0fc/1220c0fc6b49543d7bf04e83d2a5a7cbe72a83e80f9c7bca1abcaa42298a57a33ff5.data b/tests/test-repo/blocks/1220c0fc/1220c0fc6b49543d7bf04e83d2a5a7cbe72a83e80f9c7bca1abcaa42298a57a33ff5.data new file mode 100644 index 0000000000..c9885c45d7 Binary files /dev/null and b/tests/test-repo/blocks/1220c0fc/1220c0fc6b49543d7bf04e83d2a5a7cbe72a83e80f9c7bca1abcaa42298a57a33ff5.data differ diff --git a/tests/test-repo/blocks/1220e3b0/1220e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.data b/tests/test-repo/blocks/1220e3b0/1220e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.data new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/test-repo/blocks/1220e605/1220e605408ac3f78113ac9a7fd486441317afc9f967abe2aa05e7c641f7bbe98a37.data b/tests/test-repo/blocks/1220e605/1220e605408ac3f78113ac9a7fd486441317afc9f967abe2aa05e7c641f7bbe98a37.data new file mode 100644 index 0000000000..b653989765 Binary files /dev/null and b/tests/test-repo/blocks/1220e605/1220e605408ac3f78113ac9a7fd486441317afc9f967abe2aa05e7c641f7bbe98a37.data differ diff --git a/tests/test-repo/blocks/1220e6a0/1220e6a045864ff8569e43e4866c0af807def07b0db2f018808620eb30b980e94011.data b/tests/test-repo/blocks/1220e6a0/1220e6a045864ff8569e43e4866c0af807def07b0db2f018808620eb30b980e94011.data new file mode 100644 index 0000000000..6860441aa1 --- /dev/null +++ b/tests/test-repo/blocks/1220e6a0/1220e6a045864ff8569e43e4866c0af807def07b0db2f018808620eb30b980e94011.data @@ -0,0 +1,3 @@ +/ +" gq6\u8~:6~gZ.directT2 +" 6(%݄.Ӿ5(ab recursiveT \ No newline at end of file diff --git a/tests/test-repo/blocks/1220ec5b/1220ec5b533a3218991f4377b8b8c2538b95dd29d31eac6433af0fb6fcd83dd80778.data b/tests/test-repo/blocks/1220ec5b/1220ec5b533a3218991f4377b8b8c2538b95dd29d31eac6433af0fb6fcd83dd80778.data new file mode 100644 index 0000000000..7b58d6c857 --- /dev/null +++ b/tests/test-repo/blocks/1220ec5b/1220ec5b533a3218991f4377b8b8c2538b95dd29d31eac6433af0fb6fcd83dd80778.data @@ -0,0 +1,3 @@ +/ +" @ԆDgA7directT2 +" ;APY0k}E=p  recursiveT \ No newline at end of file diff --git a/tests/test-repo/config b/tests/test-repo/config new file mode 100644 index 0000000000..5811699b32 --- /dev/null +++ b/tests/test-repo/config @@ -0,0 +1,88 @@ +{ + "Identity": { + "PeerID": "QmQ2zigjQikYnyYUSXZydNXrDRhBut2mubwJBaLXobMt3A", + "PrivKey": "CAASpgkwggSiAgEAAoIBAQC2SKo/HMFZeBml1AF3XijzrxrfQXdJzjePBZAbdxqKR1Mc6juRHXij6HXYPjlAk01BhF1S3Ll4Lwi0cAHhggf457sMg55UWyeGKeUv0ucgvCpBwlR5cQ020i0MgzjPWOLWq1rtvSbNcAi2ZEVn6+Q2EcHo3wUvWRtLeKz+DZSZfw2PEDC+DGPJPl7f8g7zl56YymmmzH9liZLNrzg/qidokUv5u1pdGrcpLuPNeTODk0cqKB+OUbuKj9GShYECCEjaybJDl9276oalL9ghBtSeEv20kugatTvYy590wFlJkkvyl+nPxIH0EEYMKK9XRWlu9XYnoSfboiwcv8M3SlsjAgMBAAECggEAZtju/bcKvKFPz0mkHiaJcpycy9STKphorpCT83srBVQi59CdFU6Mj+aL/xt0kCPMVigJw8P3/YCEJ9J+rS8BsoWE+xWUEsJvtXoT7vzPHaAtM3ci1HZd302Mz1+GgS8Epdx+7F5p80XAFLDUnELzOzKftvWGZmWfSeDnslwVONkL/1VAzwKy7Ce6hk4SxRE7l2NE2OklSHOzCGU1f78ZzVYKSnS5Ag9YrGjOAmTOXDbKNKN/qIorAQ1bovzGoCwx3iGIatQKFOxyVCyO1PsJYT7JO+kZbhBWRRE+L7l+ppPER9bdLFxs1t5CrKc078h+wuUr05S1P1JjXk68pk3+kQKBgQDeK8AR11373Mzib6uzpjGzgNRMzdYNuExWjxyxAzz53NAR7zrPHvXvfIqjDScLJ4NcRO2TddhXAfZoOPVH5k4PJHKLBPKuXZpWlookCAyENY7+Pd55S8r+a+MusrMagYNljb5WbVTgN8cgdpim9lbbIFlpN6SZaVjLQL3J8TWH6wKBgQDSChzItkqWX11CNstJ9zJyUE20I7LrpyBJNgG1gtvz3ZMUQCn3PxxHtQzN9n1P0mSSYs+jBKPuoSyYLt1wwe10/lpgL4rkKWU3/m1Myt0tveJ9WcqHh6tzcAbb/fXpUFT/o4SWDimWkPkuCb+8j//2yiXk0a/T2f36zKMuZvujqQKBgC6B7BAQDG2H2B/ijofp12ejJU36nL98gAZyqOfpLJ+FeMz4TlBDQ+phIMhnHXA5UkdDapQ+zA3SrFk+6yGk9Vw4Hf46B+82SvOrSbmnMa+PYqKYIvUzR4gg34rL/7AhwnbEyD5hXq4dHwMNsIDq+l2elPjwm/U9V0gdAl2+r50HAoGALtsKqMvhv8HucAMBPrLikhXP/8um8mMKFMrzfqZ+otxfHzlhI0L08Bo3jQrb0Z7ByNY6M8epOmbCKADsbWcVre/AAY0ZkuSZK/CaOXNX/AhMKmKJh8qAOPRY02LIJRBCpfS4czEdnfUhYV/TYiFNnKRj57PPYZdTzUsxa/yVTmECgYBr7slQEjb5Onn5mZnGDh+72BxLNdgwBkhO0OCdpdISqk0F0Pxby22DFOKXZEpiyI9XYP1C8wPiJsShGm2yEwBPWXnrrZNWczaVuCbXHrZkWQogBDG3HGXNdU4MAWCyiYlyinIBpPpoAJZSzpGLmWbMWh28+RJS6AQX6KHrK1o2uw==" + }, + "Datastore": { + "Type": "", + "Path": "", + "StorageMax": "", + "StorageGCWatermark": 0, + "GCPeriod": "", + "Params": null, + "NoSync": false + }, + "Addresses": { + "Swarm": [ + "/ip4/0.0.0.0/tcp/4001", + "/ip6/::/tcp/4001" + ], + "API": "/ip4/127.0.0.1/tcp/5001", + "Gateway": "/ip4/127.0.0.1/tcp/8080" + }, + "Mounts": { + "IPFS": "/ipfs", + "IPNS": "/ipns", + "FuseAllowOther": false + }, + "Version": { + "Current": "0.4.0-dev", + "Check": "error", + "CheckDate": "0001-01-01T00:00:00Z", + "CheckPeriod": "172800000000000", + "AutoUpdate": "minor" + }, + "Discovery": { + "MDNS": { + "Enabled": true, + "Interval": 10 + } + }, + "Ipns": { + "RepublishPeriod": "", + "RecordLifetime": "", + "ResolveCacheSize": 128 + }, + "Bootstrap": [ + "/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ", + "/ip4/104.236.176.52/tcp/4001/ipfs/QmSoLnSGccFuZQJzRadHn95W2CrSFmZuTdDWP8HXaHca9z", + "/ip4/104.236.179.241/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM", + "/ip4/162.243.248.213/tcp/4001/ipfs/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm", + "/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu", + "/ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64", + "/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd", + "/ip4/178.62.61.185/tcp/4001/ipfs/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3", + "/ip4/104.236.151.122/tcp/4001/ipfs/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx" + ], + "Tour": { + "Last": "" + }, + "Gateway": { + "HTTPHeaders": null, + "RootRedirect": "", + "Writable": false + }, + "SupernodeRouting": { + "Servers": [ + "/ip4/104.236.176.52/tcp/4002/ipfs/QmXdb7tWTxdFEQEFgWBqkuYSrZd3mXrC7HxkD4krGNYx2U", + "/ip4/104.236.179.241/tcp/4002/ipfs/QmVRqViDByUxjUMoPnjurjKvZhaEMFDtK35FJXHAM4Lkj6", + "/ip4/104.236.151.122/tcp/4002/ipfs/QmSZwGx8Tn8tmcM4PtDJaMeUQNRhNFdBLVGPzRiNaRJtFH", + "/ip4/162.243.248.213/tcp/4002/ipfs/QmbHVEEepCi7rn7VL7Exxpd2Ci9NNB6ifvqwhsrbRMgQFP", + "/ip4/128.199.219.111/tcp/4002/ipfs/Qmb3brdCYmKG1ycwqCbo6LUwWxTuo3FisnJV2yir7oN92R", + "/ip4/104.236.76.40/tcp/4002/ipfs/QmdRBCV8Cz2dGhoKLkD3YjPwVFECmqADQkx5ZteF2c6Fy4", + "/ip4/178.62.158.247/tcp/4002/ipfs/QmUdiMPci7YoEUBkyFZAh2pAbjqcPr7LezyiPD2artLw3v", + "/ip4/178.62.61.185/tcp/4002/ipfs/QmVw6fGNqBixZE4bewRLT2VXX7fAHUHs8JyidDiJ1P7RUN" + ] + }, + "API": { + "HTTPHeaders": null + }, + "Swarm": { + "AddrFilters": null + }, + "Log": { + "MaxSizeMB": 250, + "MaxBackups": 1, + "MaxAgeDays": 0 + } +} \ No newline at end of file diff --git a/tests/test-repo/datastore/000002.ldb b/tests/test-repo/datastore/000002.ldb new file mode 100644 index 0000000000..fc04d660e9 Binary files /dev/null and b/tests/test-repo/datastore/000002.ldb differ diff --git a/tests/test-repo/datastore/000005.ldb b/tests/test-repo/datastore/000005.ldb new file mode 100644 index 0000000000..63d9d260b9 Binary files /dev/null and b/tests/test-repo/datastore/000005.ldb differ diff --git a/tests/test-repo/datastore/CURRENT b/tests/test-repo/datastore/CURRENT new file mode 100644 index 0000000000..875cf23355 --- /dev/null +++ b/tests/test-repo/datastore/CURRENT @@ -0,0 +1 @@ +MANIFEST-000007 diff --git a/tests/test-repo/datastore/LOCK b/tests/test-repo/datastore/LOCK new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/test-repo/datastore/LOG b/tests/test-repo/datastore/LOG new file mode 100644 index 0000000000..863b68fd57 --- /dev/null +++ b/tests/test-repo/datastore/LOG @@ -0,0 +1,10 @@ +=============== Dec 10, 2015 (PST) =============== +07:50:02.056578 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed +07:50:02.057231 db@open opening +07:50:02.057312 journal@recovery F·1 +07:50:02.057514 journal@recovery recovering @3 +07:50:02.058921 mem@flush created L0@5 N·4 S·1KiB "/ip..\xf6\xe4\xa9,v5":"/pk..\xf6\xe4\xa9,v6" +07:50:02.059983 db@janitor F·4 G·0 +07:50:02.060001 db@open done T·2.755926ms +07:50:02.073183 db@close closing +07:50:02.073285 db@close done T·97.522µs diff --git a/tests/test-repo/datastore/LOG.old b/tests/test-repo/datastore/LOG.old new file mode 100644 index 0000000000..708351e772 --- /dev/null +++ b/tests/test-repo/datastore/LOG.old @@ -0,0 +1,10 @@ +=============== Dec 10, 2015 (PST) =============== +07:49:57.048841 log@legend F·NumFile S·FileSize N·Entry C·BadEntry B·BadBlock Ke·KeyError D·DroppedEntry L·Level Q·SeqNum T·TimeElapsed +07:49:57.049014 db@open opening +07:49:57.049066 journal@recovery F·1 +07:49:57.049233 journal@recovery recovering @1 +07:49:57.049693 mem@flush created L0@2 N·2 S·211B "/lo..oot,v2":"/lo..ins,v1" +07:49:57.050381 db@janitor F·3 G·0 +07:49:57.050397 db@open done T·1.375431ms +07:49:57.064580 db@close closing +07:49:57.064655 db@close done T·72.59µs diff --git a/tests/test-repo/datastore/MANIFEST-000007 b/tests/test-repo/datastore/MANIFEST-000007 new file mode 100644 index 0000000000..6af3b5450f Binary files /dev/null and b/tests/test-repo/datastore/MANIFEST-000007 differ diff --git a/tests/test-repo/version b/tests/test-repo/version new file mode 100644 index 0000000000..00750edc07 --- /dev/null +++ b/tests/test-repo/version @@ -0,0 +1 @@ +3