You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							93 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							93 lines
						
					
					
						
							1.7 KiB
						
					
					
				
								package mount
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/util"
							 | 
						|
									"testing"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								func TestInodeEntry_removeOnePath(t *testing.T) {
							 | 
						|
									tests := []struct {
							 | 
						|
										name  string
							 | 
						|
										entry InodeEntry
							 | 
						|
										p     util.FullPath
							 | 
						|
										want  bool
							 | 
						|
										count int
							 | 
						|
									}{
							 | 
						|
										{
							 | 
						|
											name: "actual case",
							 | 
						|
											entry: InodeEntry{
							 | 
						|
												paths: []util.FullPath{"/pjd/nx", "/pjd/n0"},
							 | 
						|
											},
							 | 
						|
											p:     "/pjd/nx",
							 | 
						|
											want:  true,
							 | 
						|
											count: 1,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											name:  "empty",
							 | 
						|
											entry: InodeEntry{},
							 | 
						|
											p:     "x",
							 | 
						|
											want:  false,
							 | 
						|
											count: 0,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											name: "single",
							 | 
						|
											entry: InodeEntry{
							 | 
						|
												paths: []util.FullPath{"/x"},
							 | 
						|
											},
							 | 
						|
											p:     "/x",
							 | 
						|
											want:  true,
							 | 
						|
											count: 0,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											name: "first",
							 | 
						|
											entry: InodeEntry{
							 | 
						|
												paths: []util.FullPath{"/x", "/y", "/z"},
							 | 
						|
											},
							 | 
						|
											p:     "/x",
							 | 
						|
											want:  true,
							 | 
						|
											count: 2,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											name: "middle",
							 | 
						|
											entry: InodeEntry{
							 | 
						|
												paths: []util.FullPath{"/x", "/y", "/z"},
							 | 
						|
											},
							 | 
						|
											p:     "/y",
							 | 
						|
											want:  true,
							 | 
						|
											count: 2,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											name: "last",
							 | 
						|
											entry: InodeEntry{
							 | 
						|
												paths: []util.FullPath{"/x", "/y", "/z"},
							 | 
						|
											},
							 | 
						|
											p:     "/z",
							 | 
						|
											want:  true,
							 | 
						|
											count: 2,
							 | 
						|
										},
							 | 
						|
										{
							 | 
						|
											name: "not found",
							 | 
						|
											entry: InodeEntry{
							 | 
						|
												paths: []util.FullPath{"/x", "/y", "/z"},
							 | 
						|
											},
							 | 
						|
											p:     "/t",
							 | 
						|
											want:  false,
							 | 
						|
											count: 3,
							 | 
						|
										},
							 | 
						|
									}
							 | 
						|
									for _, tt := range tests {
							 | 
						|
										t.Run(tt.name, func(t *testing.T) {
							 | 
						|
											if got := tt.entry.removeOnePath(tt.p); got != tt.want {
							 | 
						|
												t.Errorf("removeOnePath() = %v, want %v", got, tt.want)
							 | 
						|
											}
							 | 
						|
											if tt.count != len(tt.entry.paths) {
							 | 
						|
												t.Errorf("removeOnePath path count = %v, want %v", len(tt.entry.paths), tt.count)
							 | 
						|
											}
							 | 
						|
											for i, p := range tt.entry.paths {
							 | 
						|
												if p == tt.p {
							 | 
						|
													t.Errorf("removeOnePath found path still exists at %v, %v", i, p)
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										})
							 | 
						|
									}
							 | 
						|
								}
							 |