Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
1d284c20
Commit
1d284c20
authored
6 years ago
by
Janoš Guljaš
Committed by
Viktor Trón
6 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
swarm/storage: change Proximity function and add TestProximity test (#18379)
parent
b025053a
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
186 additions
and
3 deletions
+186
-3
types.go
swarm/storage/types.go
+0
-3
types_test.go
swarm/storage/types_test.go
+186
-0
No files found.
swarm/storage/types.go
View file @
1d284c20
...
...
@@ -59,9 +59,6 @@ func Proximity(one, other []byte) (ret int) {
m
:=
8
for
i
:=
0
;
i
<
b
;
i
++
{
oxo
:=
one
[
i
]
^
other
[
i
]
if
i
==
b
-
1
{
m
=
MaxPO
%
8
}
for
j
:=
0
;
j
<
m
;
j
++
{
if
(
oxo
>>
uint8
(
7
-
j
))
&
0x01
!=
0
{
return
i
*
8
+
j
...
...
This diff is collapsed.
Click to expand it.
swarm/storage/types_test.go
0 → 100644
View file @
1d284c20
// Copyright 2018 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
package
storage
import
(
"strconv"
"testing"
)
// TestProximity validates Proximity function with explicit
// values in a table-driven test. It is highly dependant on
// MaxPO constant and it validates cases up to MaxPO=32.
func
TestProximity
(
t
*
testing
.
T
)
{
// integer from base2 encoded string
bx
:=
func
(
s
string
)
uint8
{
i
,
err
:=
strconv
.
ParseUint
(
s
,
2
,
8
)
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
return
uint8
(
i
)
}
// adjust expected bins in respect to MaxPO
limitPO
:=
func
(
po
uint8
)
uint8
{
if
po
>
MaxPO
{
return
MaxPO
}
return
po
}
base
:=
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)}
for
_
,
tc
:=
range
[]
struct
{
addr
[]
byte
po
uint8
}{
{
addr
:
base
,
po
:
MaxPO
,
},
{
addr
:
[]
byte
{
bx
(
"10000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
0
),
},
{
addr
:
[]
byte
{
bx
(
"01000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
1
),
},
{
addr
:
[]
byte
{
bx
(
"00100000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
2
),
},
{
addr
:
[]
byte
{
bx
(
"00010000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
3
),
},
{
addr
:
[]
byte
{
bx
(
"00001000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
4
),
},
{
addr
:
[]
byte
{
bx
(
"00000100"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
5
),
},
{
addr
:
[]
byte
{
bx
(
"00000010"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
6
),
},
{
addr
:
[]
byte
{
bx
(
"00000001"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
7
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"10000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
8
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"01000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
9
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00100000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
10
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00010000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
11
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00001000"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
12
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000100"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
13
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000010"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
14
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000001"
),
bx
(
"00000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
15
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"10000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
16
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"01000000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
17
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00100000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
18
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00010000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
19
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00001000"
),
bx
(
"00000000"
)},
po
:
limitPO
(
20
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000100"
),
bx
(
"00000000"
)},
po
:
limitPO
(
21
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000010"
),
bx
(
"00000000"
)},
po
:
limitPO
(
22
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000001"
),
bx
(
"00000000"
)},
po
:
limitPO
(
23
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"10000000"
)},
po
:
limitPO
(
24
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"01000000"
)},
po
:
limitPO
(
25
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00100000"
)},
po
:
limitPO
(
26
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00010000"
)},
po
:
limitPO
(
27
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00001000"
)},
po
:
limitPO
(
28
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000100"
)},
po
:
limitPO
(
29
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000010"
)},
po
:
limitPO
(
30
),
},
{
addr
:
[]
byte
{
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000000"
),
bx
(
"00000001"
)},
po
:
limitPO
(
31
),
},
}
{
got
:=
uint8
(
Proximity
(
base
,
tc
.
addr
))
if
got
!=
tc
.
po
{
t
.
Errorf
(
"got %v bin, want %v"
,
got
,
tc
.
po
)
}
}
}
This diff is collapsed.
Click to expand it.
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