Skip to content
Snippets Groups Projects
Commit f5a20087 authored by Jono Wenger's avatar Jono Wenger
Browse files

Remove unused code, minor test fixes, and fix integration lagging once file is received

parent a6d48eb2
No related branches found
No related tags found
2 merge requests!117Release,!82Remove unused code, minor test fixes, and fix integration lagging once file is received
......@@ -95,11 +95,11 @@ var ftCmd = &cobra.Command{
for done := false; !done; {
select {
case <-sendDone:
jww.DEBUG.Printf("Finished sending message. Stopping threads " +
jww.DEBUG.Printf("Finished sending file. Stopping threads " +
"and network follower.")
done = true
case <-receiveDone:
jww.DEBUG.Printf("Finished receiving message. Stopping " +
jww.DEBUG.Printf("Finished receiving file. Stopping " +
"threads and network follower.")
done = true
}
......@@ -229,23 +229,25 @@ func receiveNewFileTransfers(receive chan receivedFtResults, done,
quit chan struct{}, m *ft.Manager) {
jww.DEBUG.Print("Starting thread waiting to receive NewFileTransfer " +
"E2E message.")
select {
case <-quit:
jww.DEBUG.Print("Quitting thread waiting for NewFileTransfer E2E " +
"message.")
return
case r := <-receive:
jww.DEBUG.Printf("Received new file %q transfer %s from %s of size %d "+
"bytes with preview: %q",
r.fileName, r.tid, r.sender, r.size, r.preview)
fmt.Printf("Received new file transfer %q of size %d "+
"bytes with preview: %q\n", r.fileName, r.size, r.preview)
cb := newReceiveProgressCB(r.tid, done, m)
err := m.RegisterReceiveProgressCallback(r.tid, cb, callbackPeriod)
if err != nil {
jww.FATAL.Panicf("Failed to register new receive progress "+
"callback for transfer %s: %+v", r.tid, err)
for {
select {
case <-quit:
jww.DEBUG.Print("Quitting thread waiting for NewFileTransfer E2E " +
"message.")
return
case r := <-receive:
jww.DEBUG.Printf("Received new file %q transfer %s from %s of size %d "+
"bytes with preview: %q",
r.fileName, r.tid, r.sender, r.size, r.preview)
fmt.Printf("Received new file transfer %q of size %d "+
"bytes with preview: %q\n", r.fileName, r.size, r.preview)
cb := newReceiveProgressCB(r.tid, done, m)
err := m.RegisterReceiveProgressCallback(r.tid, cb, callbackPeriod)
if err != nil {
jww.FATAL.Panicf("Failed to register new receive progress "+
"callback for transfer %s: %+v", r.tid, err)
}
}
}
}
......
......@@ -52,14 +52,6 @@ const (
networkHealthBuffLen = 10_000
)
// Part status constants.
const (
unsent = 0
sent = 1
arrived = 2
received = 1
)
// Error messages.
const (
// newManager
......@@ -321,29 +313,6 @@ func (m Manager) RegisterSendProgressCallback(tid ftCrypto.TransferID,
return nil
}
// GetSentPartStatus returns the status of the sent file part number for the
// given transfer ID. An error is returned if the sent transfer does not
// exist. The possible values for the status are:
// 0 = unsent
// 1 = sent
// 2 = arrived
// TODO: test
func (m Manager) GetSentPartStatus(tid ftCrypto.TransferID, partNum uint16) (int, error) {
// Get the transfer for the given ID
transfer, err := m.sent.GetTransfer(tid)
if err != nil {
return unsent, err
}
if transfer.IsPartInProgress(partNum) {
return sent, nil
} else if transfer.IsPartFinished(partNum) {
return arrived, nil
} else {
return unsent, nil
}
}
// Resend resends a file if sending fails. Returns an error if CloseSend
// was already called or if the transfer did not run out of retries. This
// function should only be called if the interfaces.SentProgressCallback returns
......@@ -428,26 +397,6 @@ func (m Manager) RegisterReceiveProgressCallback(tid ftCrypto.TransferID,
return nil
}
// GetReceivedPartStatus returns the status of the received file part number
// for the given transfer ID. An error is returned if the received transfer
// does not exist. The possible values for the status are:
// 0 = unsent
// 1 = received
// TODO: test
func (m Manager) GetReceivedPartStatus(tid ftCrypto.TransferID, partNum uint16) (int, error) {
// Get the transfer for the given ID
transfer, err := m.received.GetTransfer(tid)
if err != nil {
return unsent, err
}
if transfer.IsPartReceived(partNum) {
return received, nil
} else {
return unsent, nil
}
}
// calcNumberOfFingerprints is the formula used to calculate the number of
// fingerprints to generate, which is based off the number of file parts and the
// retry float.
......
......@@ -241,8 +241,8 @@ func TestManager_RegisterSendProgressCallback(t *testing.T) {
// Create new callback and channel for the callback to trigger
cbChan := make(chan sentProgressResults, 6)
cb := func(completed bool, sent, arrived, total uint16,
t interfaces.FilePartTracker, err error) {
cbChan <- sentProgressResults{completed, sent, arrived, total, err}
tr interfaces.FilePartTracker, err error) {
cbChan <- sentProgressResults{completed, sent, arrived, total, tr, err}
}
// Start thread waiting for callback to be called
......@@ -452,8 +452,8 @@ func TestManager_RegisterReceiveProgressCallback(t *testing.T) {
// Create new callback and channel for the callback to trigger
cbChan := make(chan receivedProgressResults, 6)
cb := func(completed bool, received, total uint16,
t interfaces.FilePartTracker, err error) {
cbChan <- receivedProgressResults{completed, received, total, err}
tr interfaces.FilePartTracker, err error) {
cbChan <- receivedProgressResults{completed, received, total, tr, err}
}
// Start thread waiting for callback to be called
......@@ -579,8 +579,8 @@ func Test_FileTransfer(t *testing.T) {
// Create progress tracker for sending
sentCbChan := make(chan sentProgressResults, 20)
sentCb := func(completed bool, sent, arrived, total uint16,
t interfaces.FilePartTracker, err error) {
sentCbChan <- sentProgressResults{completed, sent, arrived, total, err}
tr interfaces.FilePartTracker, err error) {
sentCbChan <- sentProgressResults{completed, sent, arrived, total, tr, err}
}
// Start threads that tracks sent progress until complete
......@@ -637,8 +637,8 @@ func Test_FileTransfer(t *testing.T) {
// Register progress callback with receiving manager
receiveCbChan := make(chan receivedProgressResults, 100)
receiveCb := func(completed bool, received, total uint16,
t interfaces.FilePartTracker, err error) {
receiveCbChan <- receivedProgressResults{completed, received, total, err}
tr interfaces.FilePartTracker, err error) {
receiveCbChan <- receivedProgressResults{completed, received, total, tr, err}
}
// Start threads that tracks received progress until complete
......@@ -647,18 +647,15 @@ func Test_FileTransfer(t *testing.T) {
defer wg.Done()
for i := 0; i < 20; i++ {
select {
case <-time.NewTimer(250 * time.Millisecond).C:
case <-time.NewTimer(350 * time.Millisecond).C:
t.Errorf("Timed out waiting for receive progress callback %d.", i)
case r := <-receiveCbChan:
if r.completed {
// Count the number of parts marked as received
count := 0
for j := uint16(0); j < r.total; j++ {
status, err2 := m2.GetReceivedPartStatus(receiveTid, j)
if err2 != nil {
t.Errorf("Failed to get part %d status: %+v", j, err2)
}
if status == received {
status := r.tracker.GetPartStatus(j)
if status == 3 {
count++
}
}
......@@ -667,7 +664,7 @@ func Test_FileTransfer(t *testing.T) {
// callback matches the number marked received
if count != int(r.received) {
t.Errorf("Number of parts marked received does not match "+
"number reported by callback.\nmarked: %d\ncallback: %d",
"number reported by callback.\nmarked: %d\ncallback: %d",
count, r.received)
}
......
......@@ -751,10 +751,10 @@ func TestManager_makeRoundEventCallback_RoundFailure(t *testing.T) {
<-done1
}
// Error path: tests that Manager.makeRoundEventCallback panics when
// Panic path: tests that Manager.makeRoundEventCallback panics when
// SentTransfer.FinishTransfer returns an error because the file parts had not
// previously been set to in-progress.
func TestManager_makeRoundEventCallback_FinishTransferError(t *testing.T) {
func TestManager_makeRoundEventCallback_FinishTransferPanic(t *testing.T) {
m := newTestManager(false, nil, nil, nil, t)
prng := NewPrng(42)
......@@ -775,10 +775,10 @@ func TestManager_makeRoundEventCallback_FinishTransferError(t *testing.T) {
expectedErr := strings.Split(finishTransferPanic, "%")[0]
defer func() {
err := recover()
if err == nil || !strings.Contains(err.(string), expectedErr) {
err2 := recover()
if err2 == nil || !strings.Contains(err2.(string), expectedErr) {
t.Errorf("makeRoundEventCallback failed to panic or returned the "+
"wrong error.\nexpected: %s\nreceived: %+v", expectedErr, err)
"wrong error.\nexpected: %s\nreceived: %+v", expectedErr, err2)
}
}()
......
......@@ -232,8 +232,8 @@ func newTestManagerWithTransfers(numParts []uint16, sendErr bool,
cbChan := make(chan sentProgressResults, 6)
cb := func(completed bool, sent, arrived, total uint16,
t interfaces.FilePartTracker, err error) {
cbChan <- sentProgressResults{completed, sent, arrived, total, err}
tr interfaces.FilePartTracker, err error) {
cbChan <- sentProgressResults{completed, sent, arrived, total, tr, err}
}
sti[i].cbChan = cbChan
......@@ -267,8 +267,8 @@ func newTestManagerWithTransfers(numParts []uint16, sendErr bool,
cbChan := make(chan receivedProgressResults, 6)
cb := func(completed bool, received, total uint16,
t interfaces.FilePartTracker, err error) {
cbChan <- receivedProgressResults{completed, received, total, err}
tr interfaces.FilePartTracker, err error) {
cbChan <- receivedProgressResults{completed, received, total, tr, err}
}
rti[i].cbChan = cbChan
......@@ -300,6 +300,7 @@ type receivedFtResults struct {
type sentProgressResults struct {
completed bool
sent, arrived, total uint16
tracker interfaces.FilePartTracker
err error
}
......@@ -324,6 +325,7 @@ type sentTransferInfo struct {
type receivedProgressResults struct {
completed bool
received, total uint16
tracker interfaces.FilePartTracker
err error
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment