Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Open sidebar
dms3
go-dms3
Commits
47001548
Commit
47001548
authored
Jun 20, 2017
by
Kevin Atkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finish basic support for raw nodes in dag modifier.
License: MIT Signed-off-by:
Kevin Atkinson
<
k@kevina.org
>
parent
c75ac6a7
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
57 additions
and
17 deletions
+57
-17
test/sharness/t0250-files-api.sh
test/sharness/t0250-files-api.sh
+37
-0
unixfs/mod/dagmodifier.go
unixfs/mod/dagmodifier.go
+18
-16
unixfs/mod/dagmodifier_test.go
unixfs/mod/dagmodifier_test.go
+2
-1
No files found.
test/sharness/t0250-files-api.sh
View file @
47001548
...
...
@@ -15,6 +15,7 @@ test_expect_success "can create some files for testing" '
FILE1=$(echo foo | ipfs add -q) &&
FILE2=$(echo bar | ipfs add -q) &&
FILE3=$(echo baz | ipfs add -q) &&
FILE9=$(echo zip | ipfs add -q --raw-leaves) &&
mkdir stuff_test &&
echo cats > stuff_test/a &&
echo dogs > stuff_test/b &&
...
...
@@ -252,6 +253,42 @@ test_files_api() {
test_cmp roothash roothashafter
'
# test raw node
test_expect_success
"can put a raw-node into root"
'
ipfs files cp /ipfs/$FILE9 /file9
'
test_expect_success
"file shows up in root"
'
verify_dir_contents / file9 cats
'
test_expect_success
"can read file"
'
ipfs files read /file9 > file9out
'
test_expect_success
"output looks good"
'
echo zip > expected &&
test_cmp expected file9out
'
test_expect_success
"can remove file from root"
'
ipfs files rm /file9
'
test_expect_success
"file no longer appears"
'
verify_dir_contents / cats
'
test_expect_success
"check root hash"
'
ipfs files stat --hash / > roothash
'
test_expect_success
"check root hash was not changed"
'
ipfs files stat --hash / > roothashafter &&
test_cmp roothash roothashafter
'
# test read options
test_expect_success
"read from offset works"
'
...
...
unixfs/mod/dagmodifier.go
View file @
47001548
...
...
@@ -152,23 +152,25 @@ func (dm *DagModifier) Write(b []byte) (int, error) {
var
ErrNoRawYet
=
fmt
.
Errorf
(
"currently only fully support protonodes in the dagmodifier"
)
func
(
dm
*
DagModifier
)
Size
()
(
int64
,
error
)
{
pbnd
,
ok
:=
dm
.
curNode
.
(
*
mdag
.
ProtoNode
)
if
!
ok
{
return
0
,
ErrNoRawYet
}
pbn
,
err
:=
ft
.
FromBytes
(
pbnd
.
Data
())
if
err
!=
nil
{
return
0
,
err
}
if
dm
.
wrBuf
!=
nil
{
if
uint64
(
dm
.
wrBuf
.
Len
())
+
dm
.
writeStart
>
pbn
.
GetFilesize
()
{
switch
nd
:=
dm
.
curNode
.
(
type
)
{
case
*
mdag
.
ProtoNode
:
pbn
,
err
:=
ft
.
FromBytes
(
nd
.
Data
())
if
err
!=
nil
{
return
0
,
err
}
if
dm
.
wrBuf
!=
nil
&&
uint64
(
dm
.
wrBuf
.
Len
())
+
dm
.
writeStart
>
pbn
.
GetFilesize
()
{
return
int64
(
dm
.
wrBuf
.
Len
())
+
int64
(
dm
.
writeStart
),
nil
}
return
int64
(
pbn
.
GetFilesize
()),
nil
case
*
mdag
.
RawNode
:
if
dm
.
wrBuf
!=
nil
{
return
0
,
ErrNoRawYet
}
sz
,
err
:=
nd
.
Size
()
return
int64
(
sz
),
err
default
:
return
0
,
ErrNotUnixfs
}
return
int64
(
pbn
.
GetFilesize
()),
nil
}
// Sync writes changes to this dag to disk
...
...
@@ -397,12 +399,12 @@ func (dm *DagModifier) CtxReadFull(ctx context.Context, b []byte) (int, error) {
}
// GetNode gets the modified DAG Node
func
(
dm
*
DagModifier
)
GetNode
()
(
*
mdag
.
Proto
Node
,
error
)
{
func
(
dm
*
DagModifier
)
GetNode
()
(
node
.
Node
,
error
)
{
err
:=
dm
.
Sync
()
if
err
!=
nil
{
return
nil
,
err
}
return
dm
.
curNode
.
Copy
()
.
(
*
mdag
.
ProtoNode
)
,
nil
return
dm
.
curNode
.
Copy
(),
nil
}
// HasChanges returned whether or not there are unflushed changes to this dag
...
...
unixfs/mod/dagmodifier_test.go
View file @
47001548
...
...
@@ -9,6 +9,7 @@ import (
h
"github.com/ipfs/go-ipfs/importer/helpers"
trickle
"github.com/ipfs/go-ipfs/importer/trickle"
mdag
"github.com/ipfs/go-ipfs/merkledag"
ft
"github.com/ipfs/go-ipfs/unixfs"
uio
"github.com/ipfs/go-ipfs/unixfs/io"
testu
"github.com/ipfs/go-ipfs/unixfs/test"
...
...
@@ -105,7 +106,7 @@ func TestDagModifierBasic(t *testing.T) {
t
.
Fatal
(
err
)
}
size
,
err
:=
ft
.
DataSize
(
node
.
Data
())
size
,
err
:=
ft
.
DataSize
(
node
.
(
*
mdag
.
ProtoNode
)
.
Data
())
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment