From 0e751b983cfad2d30cfddf50789bc84737a33886 Mon Sep 17 00:00:00 2001
From: Marcin
Date: Mon, 18 Aug 2014 23:05:47 +0200
Subject: [PATCH] Enable to configure scan interval per each repository
independently
Fix broken tests
Bugfix
Clean up
Refactor variable name
Adjust tests
Minor fixes
Fix typo. Remove indent.
---
config/config.go | 37 ++++++++++++++++++++++++-------------
config/config_test.go | 21 +++++++++++++--------
gui/index.html | 11 +++++++----
model/puller.go | 4 ++--
4 files changed, 46 insertions(+), 27 deletions(-)
diff --git a/config/config.go b/config/config.go
index 61a19eb5..ec61c266 100644
--- a/config/config.go
+++ b/config/config.go
@@ -31,13 +31,14 @@ type Configuration struct {
}
type RepositoryConfiguration struct {
- ID string `xml:"id,attr"`
- Directory string `xml:"directory,attr"`
- Nodes []RepositoryNodeConfiguration `xml:"node"`
- ReadOnly bool `xml:"ro,attr"`
- IgnorePerms bool `xml:"ignorePerms,attr"`
- Invalid string `xml:"-"` // Set at runtime when there is an error, not saved
- Versioning VersioningConfiguration `xml:"versioning"`
+ ID string `xml:"id,attr"`
+ Directory string `xml:"directory,attr"`
+ Nodes []RepositoryNodeConfiguration `xml:"node"`
+ ReadOnly bool `xml:"ro,attr"`
+ RescanIntervalS int `xml:"rescanIntervalS,attr" default:"60"`
+ IgnorePerms bool `xml:"ignorePerms,attr"`
+ Invalid string `xml:"-"` // Set at runtime when there is an error, not saved
+ Versioning VersioningConfiguration `xml:"versioning"`
nodeIDs []protocol.NodeID
}
@@ -116,7 +117,6 @@ type OptionsConfiguration struct {
LocalAnnMCAddr string `xml:"localAnnounceMCAddr" default:"[ff32::5222]:21026"`
ParallelRequests int `xml:"parallelRequests" default:"16"`
MaxSendKbps int `xml:"maxSendKbps"`
- RescanIntervalS int `xml:"rescanIntervalS" default:"60"`
ReconnectIntervalS int `xml:"reconnectionIntervalS" default:"60"`
StartBrowser bool `xml:"startBrowser" default:"true"`
UPnPEnabled bool `xml:"upnpEnabled" default:"true"`
@@ -124,11 +124,12 @@ type OptionsConfiguration struct {
UPnPRenewal int `xml:"upnpRenewalMinutes" default:"30"`
URAccepted int `xml:"urAccepted"` // Accepted usage reporting version; 0 for off (undecided), -1 for off (permanently)
- Deprecated_UREnabled bool `xml:"urEnabled,omitempty" json:"-"`
- Deprecated_URDeclined bool `xml:"urDeclined,omitempty" json:"-"`
- Deprecated_ReadOnly bool `xml:"readOnly,omitempty" json:"-"`
- Deprecated_GUIEnabled bool `xml:"guiEnabled,omitempty" json:"-"`
- Deprecated_GUIAddress string `xml:"guiAddress,omitempty" json:"-"`
+ Deprecated_RescanIntervalS int `xml:"rescanIntervalS,omitempty" json:"-"`
+ Deprecated_UREnabled bool `xml:"urEnabled,omitempty" json:"-"`
+ Deprecated_URDeclined bool `xml:"urDeclined,omitempty" json:"-"`
+ Deprecated_ReadOnly bool `xml:"readOnly,omitempty" json:"-"`
+ Deprecated_GUIEnabled bool `xml:"guiEnabled,omitempty" json:"-"`
+ Deprecated_GUIAddress string `xml:"guiAddress,omitempty" json:"-"`
}
type GUIConfiguration struct {
@@ -372,10 +373,20 @@ func Load(rd io.Reader, myID protocol.NodeID) (Configuration, error) {
}
func convertV3V4(cfg *Configuration) {
+ // In previous versions, rescan interval was common for each repository.
+ // From now, it can be set independently. We have to make sure, that after upgrade
+ // the individual rescan interval will be defined for every existing repository.
+ for i := range cfg.Repositories {
+ cfg.Repositories[i].RescanIntervalS = cfg.Options.Deprecated_RescanIntervalS
+ }
+
+ cfg.Options.Deprecated_RescanIntervalS = 0
+
// In previous versions, repositories held full node configurations.
// Since that's the only place where node configs were in V1, we still have
// to define the deprecated fields to be able to upgrade from V1 to V4.
for i, repo := range cfg.Repositories {
+
for j := range repo.Nodes {
rncfg := cfg.Repositories[i].Nodes[j]
rncfg.Deprecated_Name = ""
diff --git a/config/config_test.go b/config/config_test.go
index 582276e0..696baecb 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -33,7 +33,6 @@ func TestDefaultValues(t *testing.T) {
LocalAnnMCAddr: "[ff32::5222]:21026",
ParallelRequests: 16,
MaxSendKbps: 0,
- RescanIntervalS: 60,
ReconnectIntervalS: 60,
StartBrowser: true,
UPnPEnabled: true,
@@ -70,6 +69,7 @@ func TestNodeConfig(t *testing.T) {
true
+ 600
`)
@@ -90,6 +90,9 @@ func TestNodeConfig(t *testing.T) {
b
+
+ 600
+
`)
@@ -105,11 +108,14 @@ func TestNodeConfig(t *testing.T) {
b
+
+ 600
+
`)
v4data := []byte(`
-
+
@@ -129,10 +135,11 @@ func TestNodeConfig(t *testing.T) {
expectedRepos := []RepositoryConfiguration{
{
- ID: "test",
- Directory: "~/Sync",
- Nodes: []RepositoryNodeConfiguration{{NodeID: node1}, {NodeID: node4}},
- ReadOnly: true,
+ ID: "test",
+ Directory: "~/Sync",
+ Nodes: []RepositoryNodeConfiguration{{NodeID: node1}, {NodeID: node4}},
+ ReadOnly: true,
+ RescanIntervalS: 600,
},
}
expectedNodes := []NodeConfiguration{
@@ -204,7 +211,6 @@ func TestOverriddenValues(t *testing.T) {
quux:3232
32
1234
- 600
6000
false
false
@@ -223,7 +229,6 @@ func TestOverriddenValues(t *testing.T) {
LocalAnnMCAddr: "quux:3232",
ParallelRequests: 32,
MaxSendKbps: 1234,
- RescanIntervalS: 600,
ReconnectIntervalS: 6000,
StartBrowser: false,
UPnPEnabled: false,
diff --git a/gui/index.html b/gui/index.html
index 9ea66132..6ce25bb0 100644
--- a/gui/index.html
+++ b/gui/index.html
@@ -497,6 +497,13 @@
The repository path cannot be blank.
+
@@ -581,10 +588,6 @@
-
-
-
-