mirror of
				https://github.com/TeaOSLab/EdgeNode.git
				synced 2025-11-04 16:00:25 +08:00 
			
		
		
		
	如果已经有足够的硬盘写入速度测试数据,则不再执行测试
This commit is contained in:
		@@ -16,6 +16,7 @@ const diskSpeedDataFile = "disk.speed.json"
 | 
				
			|||||||
type DiskSpeedCache struct {
 | 
					type DiskSpeedCache struct {
 | 
				
			||||||
	Speed      Speed   `json:"speed"`
 | 
						Speed      Speed   `json:"speed"`
 | 
				
			||||||
	SpeedMB    float64 `json:"speedMB"`
 | 
						SpeedMB    float64 `json:"speedMB"`
 | 
				
			||||||
 | 
						CountTests int     `json:"countTests"` // test times
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// CheckDiskWritingSpeed test disk writing speed
 | 
					// CheckDiskWritingSpeed test disk writing speed
 | 
				
			||||||
@@ -76,6 +77,30 @@ func CheckDiskIsFast() (speedMB float64, isFast bool, err error) {
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// read old cached info
 | 
				
			||||||
 | 
						var cacheFile = Tea.Root + "/data/" + diskSpeedDataFile
 | 
				
			||||||
 | 
						var cacheInfo = &DiskSpeedCache{}
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							cacheData, cacheErr := os.ReadFile(cacheFile)
 | 
				
			||||||
 | 
							if cacheErr == nil {
 | 
				
			||||||
 | 
								var oldCacheInfo = &DiskSpeedCache{}
 | 
				
			||||||
 | 
								cacheErr = json.Unmarshal(cacheData, oldCacheInfo)
 | 
				
			||||||
 | 
								if cacheErr == nil {
 | 
				
			||||||
 | 
									cacheInfo = oldCacheInfo
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						cacheInfo.CountTests++
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						defer func() {
 | 
				
			||||||
 | 
							// write to local file
 | 
				
			||||||
 | 
							cacheData, jsonErr := json.Marshal(cacheInfo)
 | 
				
			||||||
 | 
							if jsonErr == nil {
 | 
				
			||||||
 | 
								_ = os.WriteFile(cacheFile, cacheData, 0666)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	isFast = speedMB > 150
 | 
						isFast = speedMB > 150
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if speedMB <= DiskSpeedMB {
 | 
						if speedMB <= DiskSpeedMB {
 | 
				
			||||||
@@ -94,14 +119,8 @@ func CheckDiskIsFast() (speedMB float64, isFast bool, err error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	DiskSpeedMB = speedMB
 | 
						DiskSpeedMB = speedMB
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// write to local file
 | 
						cacheInfo.Speed = DiskSpeed
 | 
				
			||||||
	cacheData, jsonErr := json.Marshal(&DiskSpeedCache{
 | 
						cacheInfo.SpeedMB = DiskSpeedMB
 | 
				
			||||||
		Speed:   DiskSpeed,
 | 
					 | 
				
			||||||
		SpeedMB: DiskSpeedMB,
 | 
					 | 
				
			||||||
	})
 | 
					 | 
				
			||||||
	if jsonErr == nil {
 | 
					 | 
				
			||||||
		_ = os.WriteFile(Tea.Root+"/data/"+diskSpeedDataFile, cacheData, 0666)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,3 +54,15 @@ func Open(name string) (f *os.File, err error) {
 | 
				
			|||||||
	ReaderLimiter.Release()
 | 
						ReaderLimiter.Release()
 | 
				
			||||||
	return
 | 
						return
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ExistFile 检查文件是否存在
 | 
				
			||||||
 | 
					func ExistFile(path string) (bool, error) {
 | 
				
			||||||
 | 
						stat, err := os.Stat(path)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							if os.IsNotExist(err) {
 | 
				
			||||||
 | 
								return false, nil
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return false, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return !stat.IsDir(), nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ package fsutils_test
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	fsutils "github.com/TeaOSLab/EdgeNode/internal/utils/fs"
 | 
						fsutils "github.com/TeaOSLab/EdgeNode/internal/utils/fs"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/assert"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -15,3 +16,23 @@ func TestOpenFile(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	_ = f.Close()
 | 
						_ = f.Close()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestExistFile(t *testing.T) {
 | 
				
			||||||
 | 
						var a = assert.NewAssertion(t)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							b, err := fsutils.ExistFile("./os_test.go")
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								t.Fatal(err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							a.IsTrue(b)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							b, err := fsutils.ExistFile("./os_test2.go")
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								t.Fatal(err)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							a.IsFalse(b)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,7 @@ func init() {
 | 
				
			|||||||
	// test disk
 | 
						// test disk
 | 
				
			||||||
	goman.New(func() {
 | 
						goman.New(func() {
 | 
				
			||||||
		// load last result from local disk
 | 
							// load last result from local disk
 | 
				
			||||||
 | 
							var countTests int
 | 
				
			||||||
		cacheData, cacheErr := os.ReadFile(Tea.Root + "/data/" + diskSpeedDataFile)
 | 
							cacheData, cacheErr := os.ReadFile(Tea.Root + "/data/" + diskSpeedDataFile)
 | 
				
			||||||
		if cacheErr == nil {
 | 
							if cacheErr == nil {
 | 
				
			||||||
			var cache = &DiskSpeedCache{}
 | 
								var cache = &DiskSpeedCache{}
 | 
				
			||||||
@@ -63,9 +64,11 @@ func init() {
 | 
				
			|||||||
			if err == nil && cache.SpeedMB > 0 {
 | 
								if err == nil && cache.SpeedMB > 0 {
 | 
				
			||||||
				DiskSpeedMB = cache.SpeedMB
 | 
									DiskSpeedMB = cache.SpeedMB
 | 
				
			||||||
				DiskSpeed = cache.Speed
 | 
									DiskSpeed = cache.Speed
 | 
				
			||||||
 | 
									countTests = cache.CountTests
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if countTests < 12 {
 | 
				
			||||||
			// initial check
 | 
								// initial check
 | 
				
			||||||
			_, _, _ = CheckDiskIsFast()
 | 
								_, _, _ = CheckDiskIsFast()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,6 +84,7 @@ func init() {
 | 
				
			|||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// check high load
 | 
						// check high load
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user