Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Firebird services support #145

Merged
merged 59 commits into from
Nov 11, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
4fc6df5
Low level services wire protocol implementation and wrappers for back…
artyom-smirnov Feb 10, 2023
02a8c50
Add ServiceAttach function which starts service and wait for completi…
artyom-smirnov Jan 31, 2023
be34e98
Add NewXPBWriterFromTag to have cleaner code
artyom-smirnov Jan 31, 2023
d35c397
Allow to Wait for trace without result output
artyom-smirnov Jan 31, 2023
e3727c0
Rename GetBuffer to Bytes
artyom-smirnov Feb 1, 2023
bf4b4f4
Use int for current reader position to match len type
artyom-smirnov Feb 1, 2023
8eed595
Use append instead Join to reuse current buffer. Preallocate small bu…
artyom-smirnov Feb 1, 2023
4773019
Allow to reset XPB reader and writer
artyom-smirnov Feb 1, 2023
4ced7e9
Make port optional when connecting to services
artyom-smirnov Feb 1, 2023
2088161
Allocate new slice, when resetting XPBWriter
artyom-smirnov Feb 6, 2023
56ed9db
Tests for XPB
artyom-smirnov Feb 6, 2023
6bf25d1
Read server response after service detach
artyom-smirnov Feb 7, 2023
4c9f416
Add MaintenanceManager for database housekeeping
artyom-smirnov Feb 8, 2023
a751831
Parse server version string
artyom-smirnov Feb 8, 2023
577c77b
Indicate in SPB that we are passing UTF-8 path to database
artyom-smirnov Feb 10, 2023
3f20f19
Fix copy-paste error
artyom-smirnov Feb 10, 2023
7367828
Move builder options out of UserManagerOptions
artyom-smirnov Feb 10, 2023
1daf106
Add tests for UserManager
artyom-smirnov Feb 10, 2023
73ed68c
Use password from test environment
artyom-smirnov Feb 10, 2023
cc5e0cb
Debug output
artyom-smirnov Feb 10, 2023
5f3003b
Allow to connect services with legacy auth
artyom-smirnov Feb 10, 2023
67a3d0a
Add employee database to tests
artyom-smirnov Feb 10, 2023
5ddf098
isc_spb_sec_admin have int32 value
artyom-smirnov Feb 10, 2023
19bef19
Do not use employee for testing but allow to create databases for tes…
artyom-smirnov Feb 10, 2023
e786ae7
Make UserManager test use environment for test user and password
artyom-smirnov Feb 10, 2023
e5ee12d
Explanations for asserts
artyom-smirnov Feb 10, 2023
4325941
Allow to change admin mapping and admin flag
artyom-smirnov Feb 10, 2023
b037d18
Use int instead int32
artyom-smirnov Feb 16, 2023
39c1b63
DBInfo service manager tests
artyom-smirnov Feb 16, 2023
3ae136a
Use user and password from test environment
artyom-smirnov Mar 22, 2023
9717a9d
Use isc_spb_res_replace when replacing backup and isc_spb_res_create …
artyom-smirnov Mar 22, 2023
7998758
Simple BackupManager tests
artyom-smirnov Mar 22, 2023
73e7876
Close ServiceManager after testing
artyom-smirnov Mar 22, 2023
1fe4325
Allow pass multiple backup levels to nbackup's restore
artyom-smirnov Mar 22, 2023
7a829ff
Typo
artyom-smirnov Nov 8, 2024
7bb1ff7
Use service manager to obtain FB major version
artyom-smirnov Nov 8, 2024
083025c
Nbackup tests
artyom-smirnov Mar 22, 2023
37aca71
Typo
artyom-smirnov Mar 23, 2023
c8f90e0
Add partial MaintenanceManager tests
artyom-smirnov Mar 23, 2023
ac23881
Create test database instead using employee
artyom-smirnov Mar 23, 2023
64160b6
Remove unused imports
artyom-smirnov Mar 23, 2023
2e66ec7
Check if firebird.log exists before cleanup
artyom-smirnov Apr 4, 2023
2ad5736
Try to set permissions for firebird.log to allow cleanup it from tests
artyom-smirnov Apr 4, 2023
3a605ca
Fix database name in assert
artyom-smirnov Apr 4, 2023
a544f3e
Adjust firebird log path to cleanup. Skip tests which need firebird.l…
artyom-smirnov Apr 4, 2023
be7e14d
Use function based builders for all service manager options
artyom-smirnov Nov 8, 2024
985398b
Fix typo in service restart
artyom-smirnov Nov 8, 2024
4e9f0ea
Fail with error instead panic when checking FB version
artyom-smirnov Nov 8, 2024
a8bf165
Append env file instead overwriting
artyom-smirnov Nov 8, 2024
3417cc8
Check if log contains some string instead exact match
artyom-smirnov Nov 8, 2024
82dbe1b
Do not test NoLinger on Firebird 2.5
artyom-smirnov Nov 8, 2024
8b3bf73
Split some logs checking
artyom-smirnov Nov 8, 2024
e68b5fc
Fix copy paste error. Must use isc_spb_rpr_commit_trans for commiting…
artyom-smirnov Nov 8, 2024
164bd72
Ignore limbo transactions commit/rollback test result on Firebird 2.5…
artyom-smirnov Nov 8, 2024
f71ff54
Add license header to files
artyom-smirnov Nov 8, 2024
f3a4da5
Some examples for service manager
artyom-smirnov Nov 8, 2024
5f3755d
Add options builder for statistics
artyom-smirnov Nov 11, 2024
c033ec3
Add statistics to service manager example
artyom-smirnov Nov 11, 2024
6d4edc9
Add file header
artyom-smirnov Nov 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add NewXPBWriterFromTag to have cleaner code
  • Loading branch information
artyom-smirnov committed Nov 8, 2024
commit be34e9880470915daafc1daf850ff983af728796
4 changes: 2 additions & 2 deletions backup_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func (bm *BackupManager) Backup(database string, backup string, options BackupOp
optionsMask |= isc_spb_bkp_expand
}

spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_backup})
spb := NewXPBWriterFromTag(isc_action_svc_backup)
spb.PutString(isc_spb_dbname, database)
spb.PutString(isc_spb_bkp_file, backup)
spb.PutInt32(isc_spb_options, optionsMask)
Expand Down Expand Up @@ -146,7 +146,7 @@ func (bm *BackupManager) Restore(backup string, database string, options Restore
optionsMask |= isc_spb_res_use_all_space
}

spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_restore})
spb := NewXPBWriterFromTag(isc_action_svc_restore)
spb.PutString(isc_spb_dbname, database)
spb.PutString(isc_spb_bkp_file, backup)
spb.PutInt32(isc_spb_options, optionsMask)
Expand Down
6 changes: 3 additions & 3 deletions nbackup_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func NewNBackupManager(addr string, user string, password string, options Servic
}

func (bm *NBackupManager) Backup(database string, backup string, options NBackupOptions, verbose chan string) error {
spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_nbak})
spb := NewXPBWriterFromTag(isc_action_svc_nbak)
spb.PutString(isc_spb_dbname, database)
spb.PutString(isc_spb_nbk_file, backup)

Expand All @@ -70,7 +70,7 @@ func (bm *NBackupManager) Backup(database string, backup string, options NBackup
}

func (bm *NBackupManager) Restore(backup string, database string, options NBackupOptions, verbose chan string) error {
spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_nrest})
spb := NewXPBWriterFromTag(isc_action_svc_nrest)
spb.PutString(isc_spb_dbname, database)
spb.PutString(isc_spb_nbk_file, backup)

Expand All @@ -83,7 +83,7 @@ func (bm *NBackupManager) Restore(backup string, database string, options NBacku
}

func (bm *NBackupManager) Fixup(database string, options NBackupOptions, verbose chan string) error {
spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_nfix})
spb := NewXPBWriterFromTag(isc_action_svc_nfix)
spb.PutString(isc_spb_dbname, database)

optionsMask := options.GetOptionsMask()
Expand Down
2 changes: 1 addition & 1 deletion service_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ func (svc *ServiceManager) doGetDbStats(database string, options StatisticsOptio
optMask |= isc_spb_sts_table
}

spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_db_stats})
spb := NewXPBWriterFromTag(isc_action_svc_db_stats)
spb.PutString(isc_spb_dbname, database)
spb.PutInt32(isc_spb_options, optMask)

Expand Down
8 changes: 4 additions & 4 deletions trace_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func (t *TraceManager) StartWithName(name string, config string) (*TraceSession,
}

var res string
var spb = NewXPBWriterFromBuffer([]byte{isc_action_svc_trace_start})
var spb = NewXPBWriterFromTag(isc_action_svc_trace_start)

if len(name) > 0 {
spb.PutString(isc_spb_trc_name, name)
Expand Down Expand Up @@ -134,7 +134,7 @@ func (ts *TraceSession) Stop() (err error) {
}(auxConn)

var res string
spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_trace_stop})
spb := NewXPBWriterFromTag(isc_action_svc_trace_stop)
spb.PutInt32(isc_spb_trc_id, ts.id)

if err = auxConn.ServiceStart(spb.GetBuffer()); err != nil {
Expand Down Expand Up @@ -166,7 +166,7 @@ func (ts *TraceSession) Pause() (err error) {
}(auxConn)

var res string
spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_trace_suspend})
spb := NewXPBWriterFromTag(isc_action_svc_trace_suspend)
spb.PutInt32(isc_spb_trc_id, ts.id)

if err = auxConn.ServiceStart(spb.GetBuffer()); err != nil {
Expand Down Expand Up @@ -198,7 +198,7 @@ func (ts *TraceSession) Resume() (err error) {
}(auxConn)

var res string
spb := NewXPBWriterFromBuffer([]byte{isc_action_svc_trace_resume})
spb := NewXPBWriterFromTag(isc_action_svc_trace_resume)
spb.PutInt32(isc_spb_trc_id, ts.id)

if err = auxConn.ServiceStart(spb.GetBuffer()); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion user_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ func (um *UserManager) Close() error {
}

func (um *UserManager) userAction(action byte, user *User) error {
spb := NewXPBWriterFromBuffer([]byte{action})
spb := NewXPBWriterFromTag(action)
if user != nil {
spb.PutBytes(user.GetSpb())
}
Expand Down
4 changes: 4 additions & 0 deletions xpb.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ func NewXPBWriter() *XPBWriter {
return &XPBWriter{}
}

func NewXPBWriterFromTag(tag byte) *XPBWriter {
return &XPBWriter{buf: []byte{tag}}
}

func NewXPBWriterFromBuffer(buf []byte) *XPBWriter {
return &XPBWriter{buf: buf}
}
Expand Down