feat: Refactored all of the scaling tests and separated them out
This commit is contained in:
		@@ -9,7 +9,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	log "github.com/sirupsen/logrus"
 | 
						log "github.com/sirupsen/logrus"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"git.nicholasnovak.io/nnovak/spatial-db/storage"
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/server"
 | 
				
			||||||
	"git.nicholasnovak.io/nnovak/spatial-db/world"
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/world"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,7 +36,7 @@ func populateStorageDir(
 | 
				
			|||||||
		return
 | 
							return
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	var server storage.SimpleServer
 | 
						var server server.SimpleServer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	server.StorageDir = dirName
 | 
						server.StorageDir = dirName
 | 
				
			||||||
	if cleanup {
 | 
						if cleanup {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										39
									
								
								hash_read_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								hash_read_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/server"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var hash server.HashServer
 | 
				
			||||||
 | 
					var hashInit bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func initHash() {
 | 
				
			||||||
 | 
						if !hashInit {
 | 
				
			||||||
 | 
							fmt.Println("Initializing hash server")
 | 
				
			||||||
 | 
							hash.SetStorageRoot("skygrid-save")
 | 
				
			||||||
 | 
							hashInit = true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin128Hashtable(b *testing.B) {
 | 
				
			||||||
 | 
						initHash()
 | 
				
			||||||
 | 
						readBlockTemplate(&hash, b, 128)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin512Hashtable(b *testing.B) {
 | 
				
			||||||
 | 
						initHash()
 | 
				
			||||||
 | 
						readBlockTemplate(&hash, b, 512)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin2048Hashtable(b *testing.B) {
 | 
				
			||||||
 | 
						initHash()
 | 
				
			||||||
 | 
						readBlockTemplate(&hash, b, 2048)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin65536Hashtable(b *testing.B) {
 | 
				
			||||||
 | 
						initHash()
 | 
				
			||||||
 | 
						readBlockTemplate(&hash, b, 65536)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								inmemory_read_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								inmemory_read_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/server"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var inmemory server.InMemoryServer
 | 
				
			||||||
 | 
					var inmemoryInit bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func initInMemory() {
 | 
				
			||||||
 | 
						if !inmemoryInit {
 | 
				
			||||||
 | 
							fmt.Println("Initializing in-memory server")
 | 
				
			||||||
 | 
							inmemory.SetStorageRoot("skygrid-save")
 | 
				
			||||||
 | 
							inmemoryInit = true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin128InMemory(b *testing.B) {
 | 
				
			||||||
 | 
						initInMemory()
 | 
				
			||||||
 | 
						readBlockTemplate(&inmemory, b, 128)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin512InMemory(b *testing.B) {
 | 
				
			||||||
 | 
						initInMemory()
 | 
				
			||||||
 | 
						readBlockTemplate(&inmemory, b, 512)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin2048InMemory(b *testing.B) {
 | 
				
			||||||
 | 
						initInMemory()
 | 
				
			||||||
 | 
						readBlockTemplate(&inmemory, b, 2048)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin65536InMemory(b *testing.B) {
 | 
				
			||||||
 | 
						initInMemory()
 | 
				
			||||||
 | 
						readBlockTemplate(&inmemory, b, 65536)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										39
									
								
								ondisk_read_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								ondisk_read_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,39 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/server"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var disk server.SimpleServer
 | 
				
			||||||
 | 
					var diskInit bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func initDisk() {
 | 
				
			||||||
 | 
						if !diskInit {
 | 
				
			||||||
 | 
							fmt.Println("Initializing disk server")
 | 
				
			||||||
 | 
							disk.SetStorageRoot("skygrid-save")
 | 
				
			||||||
 | 
							diskInit = true
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin128OnDisk(b *testing.B) {
 | 
				
			||||||
 | 
						initDisk()
 | 
				
			||||||
 | 
						readBlockTemplate(&disk, b, 128)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin512OnDisk(b *testing.B) {
 | 
				
			||||||
 | 
						initDisk()
 | 
				
			||||||
 | 
						readBlockTemplate(&disk, b, 512)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin2048OnDisk(b *testing.B) {
 | 
				
			||||||
 | 
						initDisk()
 | 
				
			||||||
 | 
						readBlockTemplate(&disk, b, 2048)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func BenchmarkReadWithin65536OnDisk(b *testing.B) {
 | 
				
			||||||
 | 
						initDisk()
 | 
				
			||||||
 | 
						readBlockTemplate(&disk, b, 65536)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,56 +0,0 @@
 | 
				
			|||||||
package main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io"
 | 
					 | 
				
			||||||
	"testing"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	"git.nicholasnovak.io/nnovak/spatial-db/storage"
 | 
					 | 
				
			||||||
	"git.nicholasnovak.io/nnovak/spatial-db/world"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var server storage.InMemoryServer
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func init() {
 | 
					 | 
				
			||||||
	server.SetStorageRoot("skygrid-save")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func readBlockTemplate(rootDir string, b *testing.B, pointSpread int) {
 | 
					 | 
				
			||||||
	b.ResetTimer()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for i := 0; i < b.N; i++ {
 | 
					 | 
				
			||||||
		pos := world.RandomBlockPosWithRange(float64(pointSpread))
 | 
					 | 
				
			||||||
		if _, err := server.ReadBlockAt(pos); err != nil {
 | 
					 | 
				
			||||||
			if errors.Is(err, storage.ChunkNotFoundError) || errors.Is(err, io.EOF) {
 | 
					 | 
				
			||||||
				continue
 | 
					 | 
				
			||||||
			} else {
 | 
					 | 
				
			||||||
				b.Error(err)
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func fetchChunkTemplate(testDir string, b *testing.B) {
 | 
					 | 
				
			||||||
	b.ResetTimer()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	for i := 0; i < b.N; i++ {
 | 
					 | 
				
			||||||
		pos := world.RandomBlockPosWithRange(2048).ToChunkPos()
 | 
					 | 
				
			||||||
		if _, err := server.ReadChunkAt(pos); err != nil {
 | 
					 | 
				
			||||||
			b.Error(err)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Insert blocks
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func BenchmarkReadClusteredPoints(b *testing.B) {
 | 
					 | 
				
			||||||
	readBlockTemplate("skygrid-test", b, 128)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func BenchmarkReadSparserPoints(b *testing.B) {
 | 
					 | 
				
			||||||
	readBlockTemplate("skygrid-test", b, 2048)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func BenchmarkReadSparserPoints1(b *testing.B) {
 | 
					 | 
				
			||||||
	readBlockTemplate("skygrid-test", b, 65536)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -3,6 +3,7 @@ package server
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"git.nicholasnovak.io/nnovak/spatial-db/storage"
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/storage"
 | 
				
			||||||
	"git.nicholasnovak.io/nnovak/spatial-db/world"
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/world"
 | 
				
			||||||
 | 
						log "github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type HashServer struct {
 | 
					type HashServer struct {
 | 
				
			||||||
@@ -17,8 +18,10 @@ func (hs *HashServer) SetStorageRoot(path string) {
 | 
				
			|||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for _, data := range chunks {
 | 
						for chunkIndex, data := range chunks {
 | 
				
			||||||
		// Load in each data point from disk
 | 
							// Load in each data point from disk
 | 
				
			||||||
 | 
							log.Infof("Reading in chunk %d of %d", chunkIndex, len(chunks))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		for _, section := range data.Sections {
 | 
							for _, section := range data.Sections {
 | 
				
			||||||
			for blockIndex, blockState := range section.BlockStates {
 | 
								for blockIndex, blockState := range section.BlockStates {
 | 
				
			||||||
				pos := data.IndexToBlockPos(blockIndex)
 | 
									pos := data.IndexToBlockPos(blockIndex)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								templates_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								templates_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"errors"
 | 
				
			||||||
 | 
						"io"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/storage"
 | 
				
			||||||
 | 
						"git.nicholasnovak.io/nnovak/spatial-db/world"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func readBlockTemplate(
 | 
				
			||||||
 | 
						storageServer storage.StorageServer,
 | 
				
			||||||
 | 
						b *testing.B,
 | 
				
			||||||
 | 
						pointSpread int,
 | 
				
			||||||
 | 
					) {
 | 
				
			||||||
 | 
						b.ResetTimer()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for i := 0; i < b.N; i++ {
 | 
				
			||||||
 | 
							pos := world.RandomBlockPosWithRange(float64(pointSpread))
 | 
				
			||||||
 | 
							if _, err := storageServer.ReadBlockAt(pos); err != nil {
 | 
				
			||||||
 | 
								if errors.Is(err, storage.ChunkNotFoundError) || errors.Is(err, io.EOF) {
 | 
				
			||||||
 | 
									continue
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									b.Error(err)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user