Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
235 commits
Select commit Hold shift + click to select a range
fca4535
Update README.md
jamesmarkchan Oct 30, 2023
ef3adff
Update README.md
jamesmarkchan Nov 4, 2023
8d84a2f
Update README.md
jamesmarkchan Nov 7, 2023
0d0ab7c
updated for jdk 21 w netbeans 20
jamesmarkchan Jan 11, 2024
183ff11
"drive information", default 200 marks
jamesmarkchan Jan 12, 2024
f653505
"drive information", default 200 marks, beta release label
jamesmarkchan Jan 12, 2024
c9d9474
rename previous runs to benchmarks
jamesmarkchan Jan 12, 2024
a5c0841
replace Date usage with LocalDateTime
jamesmarkchan Jan 13, 2024
8aca184
formatting, readme
jamesmarkchan Jan 14, 2024
1e8b6a1
formatting
jamesmarkchan Jan 14, 2024
5fe3032
initial drive access time default to off
jamesmarkchan Jan 15, 2024
30700c5
rename Data Location to Drive Location
jamesmarkchan Jan 15, 2024
5aa9bbf
update readme with notes
jamesmarkchan Jan 16, 2024
f63f86c
refactor DiskRun > Benchmark and DiskMark > Sample
jamesmarkchan Jan 16, 2024
1410e6d
continue refactor DiskRun > Benchmark and DiskMark > Sample
jamesmarkchan Jan 16, 2024
d139871
display average read and write access time
jamesmarkchan Jan 16, 2024
d29e66a
update benchmark to capture disk access time
jamesmarkchan Jan 16, 2024
5797a8a
update readme features
jamesmarkchan Jan 16, 2024
32fe671
update readme features
jamesmarkchan Jan 16, 2024
145d612
more readme updates
jamesmarkchan Jan 16, 2024
4ccbebe
more readme updates
jamesmarkchan Jan 16, 2024
cf6f7e3
add netbeans run error handling
jamesmarkchan Jan 16, 2024
8b1ccf2
adjust component position to resolve display issues in ubuntu
jamesmarkchan Jan 16, 2024
9b4113a
consolidate block and sample parameters
jamesmarkchan Jan 16, 2024
96e6cee
formatting
jamesmarkchan Jan 16, 2024
92bd7f7
add logging statements for debugging
jamesmarkchan Jan 16, 2024
22e5751
error handling in win model number retrieval
jamesmarkchan Jan 16, 2024
33479a7
rename axis to "Average Access Time"
jamesmarkchan Jan 16, 2024
d0d1f31
readme formatting
jamesmarkchan Jan 16, 2024
d6632b0
Update README.md
jamesmarkchan Jan 16, 2024
759ace2
rename deprecated call
jamesmarkchan Jan 16, 2024
b1f7dd0
Update README.md
jamesmarkchan Jan 16, 2024
a9a5bc9
Update README.md
jamesmarkchan Jan 16, 2024
3da4d5d
revise sample size dropdown options
jamesmarkchan Jan 16, 2024
3a2ba22
add partition look up for device name
jamesmarkchan Jan 18, 2024
bdd3a1f
Merge branch 'v0.5' of github.com:jDiskMark/jdm-java into v0.5
jamesmarkchan Jan 18, 2024
5d69014
#3 fix linux LVM and RAID partition reporting
jamesmarkchan Jan 20, 2024
aa5eabd
#3 fix linux LVM and RAID partitions, missing read line
jamesmarkchan Jan 20, 2024
6b59645
#3 fix model size formatting
jamesmarkchan Jan 20, 2024
42988bc
hide ms axis if not showing access time
jamesmarkchan Jan 20, 2024
e63108e
adjust block per sample label
jamesmarkchan Jan 20, 2024
6789d9d
#2 update messages so unique to OS, draft Linux drop cache cmd
jamesmarkchan Jan 20, 2024
a8f9801
#2 refactor os specific methods into OsUtil.java
jamesmarkchan Jan 20, 2024
506a170
#2 refactor os specific methods into OsUtil.java
jamesmarkchan Jan 20, 2024
2686964
#2 unused imports
jamesmarkchan Jan 20, 2024
064147a
#2 store jdm.properties in .jDiskMark, cleanup config logic
jamesmarkchan Jan 21, 2024
b36a734
#2 automated dropping of disk cache in linux when running as root
jamesmarkchan Jan 21, 2024
3f15d58
#2 more tolerant of different win and mac os versions
jamesmarkchan Jan 21, 2024
062a534
#2 storing unintegrated script to disable windows disk cache
jamesmarkchan Jan 22, 2024
711643c
#2 update readme with mac os notes
jamesmarkchan Jan 22, 2024
88f8d36
#2 invalidating windows disk catch when running as admin
jamesmarkchan Jan 23, 2024
5ad12e3
#2 adding delays to allow disk to flush w low sample numbers
jamesmarkchan Jan 23, 2024
e4f6386
#2 adding untested cache drop commands for mac os
jamesmarkchan Jan 23, 2024
9d3ddcf
Merge origin/v0.5 into v0.5
jamesmarkchan Jan 23, 2024
5d18081
#2 minor output
jamesmarkchan Jan 23, 2024
c8d8a99
optimize colors, adjust access time series, elapsed time in ms
jamesmarkchan Jan 23, 2024
98dbe86
Update README.md
jamesmarkchan Jan 23, 2024
1f54106
Update README.md
jamesmarkchan Jan 23, 2024
b786dd4
create cache dir if it does not exist
jamesmarkchan Jan 24, 2024
3c16858
#2 more robust disk model detection on mac os
jamesmarkchan Jan 24, 2024
a5f2c92
#2 update readme
jamesmarkchan Jan 24, 2024
1e6d76f
Update README.md
jamesmarkchan Jan 24, 2024
331094b
work on readme
jamesmarkchan Jan 24, 2024
837ec7f
work on readme
jamesmarkchan Jan 24, 2024
66aea8a
Update README.md
jamesmarkchan Jan 24, 2024
794cbf4
Update README.md
jamesmarkchan Jan 24, 2024
7e2734a
Update README.md
jamesmarkchan Jan 24, 2024
d0e391e
Update README.md
jamesmarkchan Jan 24, 2024
7f5bda8
add new charting proposals
jamesmarkchan Jan 25, 2024
ab04df3
#6 save plot to db, select saved benchmark loads settings stats & plot
jamesmarkchan Jan 27, 2024
1011370
#6 getter referencing wrong attribute
jamesmarkchan Jan 27, 2024
76f34b1
#6 single selection of a row to simplify
jamesmarkchan Jan 27, 2024
339e01f
defaulting to show access time
jamesmarkchan Jan 27, 2024
0896777
Update README.md
jamesmarkchan Jan 27, 2024
623157a
rename to UtilOs class
jamesmarkchan Jan 27, 2024
f8e9414
check root or admin at startup, display on app title
jamesmarkchan Jan 27, 2024
f250a06
Merge branch 'v0.5' of github.com:jDiskMark/jdm-java into v0.5
jamesmarkchan Jan 27, 2024
416fd18
#6 calls to update legend and axis, revise to "delete benchmarks", in…
jamesmarkchan Jan 27, 2024
0a56735
compiler warnings for type safety
jamesmarkchan Jan 27, 2024
101b77f
replace Runtime.exec w use of ProcessBuilder
jamesmarkchan Jan 27, 2024
ddc5afd
#6 update legend based on benchmark being loaded, adjust menu order
jamesmarkchan Jan 27, 2024
6121fc5
add usage and capacity to benchmarks, convert disk info field to model
jamesmarkchan Jan 28, 2024
3e8e888
break out actions from options menu
jamesmarkchan Jan 28, 2024
23520cb
minor text formatting
jamesmarkchan Jan 28, 2024
672fdd7
fix usage processing on windows
jamesmarkchan Jan 28, 2024
0fdf75d
#* capacity working on macos
jamesmarkchan Jan 28, 2024
fe77015
comment
jamesmarkchan Jan 28, 2024
6e747fd
update readme and mark beta 4 release
jamesmarkchan Jan 28, 2024
2bdf13c
rename run columns to bw columns for clarity, removed unused setters.
jamesmarkchan Jan 28, 2024
2ad8ebb
adjust font to aid centering, remove usage / total from column to sim…
jamesmarkchan Jan 29, 2024
8edfa64
color palette
jamesmarkchan Feb 2, 2024
08c0d00
GH-9 wip for processor info
jamesmarkchan Feb 2, 2024
d7b909a
save and load color palette
jamesmarkchan Feb 3, 2024
41642ec
GH-9 implement processor name display, verified on windows
jamesmarkchan Feb 3, 2024
cfa1325
0.5 release
jamesmarkchan Feb 3, 2024
3c3e150
adjust read label to align with others
jamesmarkchan Feb 3, 2024
b475aab
remove implemented features from proposed list
jamesmarkchan Feb 3, 2024
380c6c1
GH-12 starting LAF branch
jamesmarkchan Feb 4, 2024
e30b371
fix palette loading
jamesmarkchan Feb 4, 2024
c44b667
Merge branch 'master' into dev
jamesmarkchan Feb 4, 2024
90a7bcc
Merge branch 'dev' into GH-12
jamesmarkchan Feb 4, 2024
0735a85
prepare readme for v0.6 objectives
jamesmarkchan Feb 4, 2024
e4546f4
Merge branch 'dev' into GH-12
jamesmarkchan Feb 4, 2024
03a5816
fix tabbed pane snapping to bottom scroll
jamesmarkchan Feb 4, 2024
54901f7
Merge branch 'master' into dev
jamesmarkchan Feb 4, 2024
910d293
Merge branch 'dev' into GH-12
jamesmarkchan Feb 4, 2024
6f91a1e
more form stuff
jamesmarkchan Feb 4, 2024
0bf507f
Merge branch 'GH-12' into dev
jamesmarkchan Feb 4, 2024
a953fb0
link os and arch to benchmark for storage
jamesmarkchan Feb 4, 2024
3967504
get focus on the start button
jamesmarkchan Feb 4, 2024
d7086ae
Flat Light LAF on windows
jamesmarkchan Feb 4, 2024
1057298
Merge branch 'dev' of https://github.com/jDiskMark/jdm-java into GH-12
jamesmarkchan Feb 4, 2024
185ba83
GH-12 modified flat light for linux
jamesmarkchan Feb 4, 2024
ab2d1ed
GH-12 restored nimbus for mac os
jamesmarkchan Feb 4, 2024
892825d
GH-12 place aqua for mac os testing
jamesmarkchan Feb 4, 2024
aed7307
Revert "GH-12 modified flat light for linux"
jamesmarkchan Feb 4, 2024
991be20
GH-12 set nimbus for linux
jamesmarkchan Feb 4, 2024
636074c
update issue references
jamesmarkchan Feb 4, 2024
30f7632
trying #'s in issue references
jamesmarkchan Feb 4, 2024
4613212
cleanup
jamesmarkchan Feb 4, 2024
64b6423
cleanup
jamesmarkchan Feb 4, 2024
75a9674
Auto stash before merge of "dev" and "origin/dev"
jamesmarkchan Feb 4, 2024
de77016
Update README.md
jamesmarkchan Feb 4, 2024
28d90d4
cleanup
jamesmarkchan Feb 13, 2024
9d76b4a
remove flushmem.exe from build
jamesmarkchan Feb 13, 2024
5ba0195
GH-17 calculate disk usage on windows 10
jamesmarkchan Feb 13, 2024
21e8eb3
Merge branch 'master' into GH-17
jamesmarkchan Feb 13, 2024
0341cc7
GH-17 update version and release
jamesmarkchan Feb 13, 2024
b9cfa80
GH-14 jpackage windows support
jamesmarkchan Feb 18, 2024
c59eaf5
GH-14 fix ant copy command
jamesmarkchan Feb 18, 2024
974bd20
GH-14 script to sign msi installer
jamesmarkchan Feb 23, 2024
2b2c668
GH-21 prevent throwing exception for windows to allow processing of U…
jamesmarkchan Mar 10, 2024
e06f847
Merge branch 'master' into dev
jamesmarkchan Mar 11, 2024
df12f23
Merge branch 'GH-14' into dev
jamesmarkchan Mar 11, 2024
af0178b
GH-12 relocate start button to after settings, etched borders
jamesmarkchan Mar 12, 2024
f9aef89
#22 tmp solution for spanish usage
jamesmarkchan Jul 15, 2024
f09b422
#13 detect drive on startup
jamesmarkchan Jul 15, 2024
4d1db35
#13 update readme and version
jamesmarkchan Jul 15, 2024
504dc69
Merge branch 'GH-12' into dev
jamesmarkchan Aug 19, 2024
4d1a806
#22 location dir is more ideal
jamesmarkchan Jan 4, 2025
46bf60c
GH-22 initial ps capacity
jamesmarkchan Jan 4, 2025
5f4adb1
GH-22 improve capacity precision
jamesmarkchan Jan 5, 2025
b65a689
GH-22 replace custom format with json
jamesmarkchan Jan 5, 2025
81132e7
GH-22 add capacity.ps1 to build
jamesmarkchan Jan 5, 2025
4abdb28
GH-22 update readme
jamesmarkchan Jan 5, 2025
b6ddc2b
GH-23 delete selected benchmark(s)
jamesmarkchan Jan 12, 2025
4adb2ce
GH-23 adjust version
jamesmarkchan Jan 12, 2025
5a0d309
GH-10 draft of iops processing
jamesmarkchan Jan 12, 2025
93c713d
update readme todo's for v0.6.0
jamesmarkchan Jan 13, 2025
17921f1
Fixed Linux regression. Corrected instructions for flushing disk cache.
jslcom Jan 16, 2025
062afda
GH-25 update version for dev.c
jamesmarkchan Jan 18, 2025
4d29d62
default write sync off
jamesmarkchan Jan 18, 2025
0075e82
create version d
jamesmarkchan Jan 18, 2025
4b79d39
adjust panel to avoid linux 2nd column cutoff
jamesmarkchan Jan 18, 2025
e6ab7e1
add readme to dist
jamesmarkchan Jan 18, 2025
49ddb49
adjust IOPS positions and layout
jamesmarkchan Feb 10, 2025
b2a0ea2
adjust status panel
jamesmarkchan Feb 11, 2025
a435a86
add controls to select number of threads
jamesmarkchan Feb 11, 2025
b3996ed
adjusted for windows
jamesmarkchan Feb 11, 2025
7694f07
adjustment on ubuntu
jamesmarkchan Feb 11, 2025
2469b06
adjustment on ubuntu
jamesmarkchan Feb 11, 2025
dd2dba6
adjustment on ubuntu
jamesmarkchan Feb 11, 2025
d505848
update msi script to handle pre release
jamesmarkchan Feb 16, 2025
a2df944
#26 lowercase proj and jar name
jamesmarkchan Feb 17, 2025
010ba1d
GH-20 initial threading
jamesmarkchan Mar 24, 2025
bbb91c6
#20 - ignore patch files
jamesmarkchan Mar 24, 2025
37a3e24
#20 - update prerelase label
jamesmarkchan Mar 24, 2025
b3e19af
#20 - column alignment, add threads, adjust column width
jamesmarkchan Mar 24, 2025
7217a4c
Fix IO Mode casing and improve config loading
vpstackhub May 19, 2025
6fcc956
Merge pull request #28 from jDiskMark/feature/threading
jamesmarkchan May 24, 2025
f797378
#20 - prepare for threading msi build
jamesmarkchan Jun 2, 2025
46efc74
#37 - ant package msi task
jamesmarkchan Jun 2, 2025
ad025bc
#37 - sign task
jamesmarkchan Jun 2, 2025
bbf2166
#37 - signtool exe property
jamesmarkchan Jun 2, 2025
8058896
#37 - clean before build
jamesmarkchan Jun 2, 2025
64cc3f3
Update README.md
vpstackhub Jun 4, 2025
306d829
#36 - Switch to IOMode enum in combo box logic
vpstackhub Jun 4, 2025
532fdc6
#36 - Update version to dev.dropdown in build.xml
vpstackhub Jun 4, 2025
91e83ca
#36 - Final updates: App.ioMode sync, switch arrow syntax, and cleane…
vpstackhub Jun 8, 2025
8fd465e
#36 - Replaced App.readTest/writeTest with ioMode logic
vpstackhub Jun 12, 2025
885d928
Merge branch 'dev' into dropdown
jamesmarkchan Jun 13, 2025
7677db6
Merge pull request #36 from jDiskMark/dropdown
jamesmarkchan Jun 13, 2025
5be1010
#16 - Initial DMG installer working
tylermlui Jul 18, 2025
47e56e4
#37 - prepare for 0.6.0 release
jamesmarkchan Aug 10, 2025
53af07a
Merge branch 'master' of github.com:jDiskMark/jdm-java
jamesmarkchan Aug 10, 2025
4debabb
#63 - update num threads in benchmark
jamesmarkchan Aug 10, 2025
2745198
#63 - consistent label name, new sw syntax
jamesmarkchan Aug 10, 2025
dfb804d
#63 - fix issue w read benchmark results
jamesmarkchan Aug 10, 2025
52d2488
#65 - add license file
jamesmarkchan Aug 14, 2025
bbe75d6
update readme
jamesmarkchan Aug 20, 2025
e00f5f3
remove "Average" to make chart label consistent
jamesmarkchan Aug 20, 2025
7b7e95f
make label unit consistent, update title
jamesmarkchan Aug 24, 2025
a588333
update vendor name for msi, rename ant variable
jamesmarkchan Aug 24, 2025
2fba016
#65 - adjust version
jamesmarkchan Aug 24, 2025
d6afb19
#65 - refactor main frame for windows:
jamesmarkchan Aug 24, 2025
4ab72c4
Issue #64: Persist Write Sync flag; show Write* in Mode; keep UI lean…
vpstackhub Aug 25, 2025
bb57a67
Issue #64: persist Write Sync + UI polish + IOPS wiring
vpstackhub Aug 28, 2025
9b7fdae
#77 - whitespace
jamesmarkchan Aug 30, 2025
a8a8d33
Merge pull request #77 from jDiskMark/write-sync-iops
jamesmarkchan Aug 30, 2025
b11c5d9
#40 - linux optimized laf w blue bk
jamesmarkchan Aug 31, 2025
3a663f5
#40 - diagnostic code
jamesmarkchan Sep 1, 2025
1785bd4
#40 - add CONTRIBUTING.md
jamesmarkchan Sep 1, 2025
67cf6b9
#40 reorder rename event log tab, add not on drive location.
jamesmarkchan Sep 1, 2025
b978198
Merge branch 'cp-laf' into dev
jamesmarkchan Sep 1, 2025
f2c180b
#40 restore release ver to dev
jamesmarkchan Sep 1, 2025
91270d6
0.6.2 general release
jamesmarkchan Sep 1, 2025
31f47ba
update msi app title
jamesmarkchan Sep 1, 2025
9bd8a94
update naming conventions
jamesmarkchan Sep 1, 2025
3649bd1
Merge remote-tracking branch 'origin/macOS' into release
jamesmarkchan Sep 1, 2025
76f5d62
update references to JDiskMark
jamesmarkchan Sep 1, 2025
f7a2b13
#74 support for concurrent versions
jamesmarkchan Sep 1, 2025
539a217
#84 processor lookup for sp language
jamesmarkchan Sep 2, 2025
8bf44ec
update sensitivity for num threads combo
jamesmarkchan Sep 2, 2025
e7f7844
#84 default lenglish
jamesmarkchan Sep 6, 2025
3b29e99
#73 initial datamodel refactor
jamesmarkchan Sep 15, 2025
03f33eb
#73 remove unused fields, update type and threads on load
jamesmarkchan Sep 15, 2025
f940a69
#73 load operation on selection, replaces mouse click listener
jamesmarkchan Sep 15, 2025
8e1c291
#73 update readme, rename run to benchmark
jamesmarkchan Sep 15, 2025
fa51a8b
Merge pull request #88 from JDiskMark/new-data-model
jamesmarkchan Sep 15, 2025
cae8c61
#78 - Implement Render Mode Options (Charts, Table, Charts + Table)
vpstackhub Sep 17, 2025
14f2da8
#78 - Final implementation: render mode options + shrunk banner
vpstackhub Sep 22, 2025
d8b0cb1
#78 - implement RenderFrequencyMode logic cleanup in BenchmarkWorker …
vpstackhub Sep 30, 2025
9c16e84
Rename Render Mode label to Display Mode
vpstackhub Oct 3, 2025
7ccfe47
remove extra properties file
jamesmarkchan Oct 5, 2025
e6a1ed1
#84 update to target version
jamesmarkchan Oct 5, 2025
36b22df
#84 dev
jamesmarkchan Oct 5, 2025
68c46bc
#78 - Added RenderFrequencyMode persistence and UI display in Benchma…
vpstackhub Oct 5, 2025
079cea1
Merge branch 'dev' into bug/eng-local-posix
jamesmarkchan Oct 6, 2025
dfc115f
Merge pull request #85 from JDiskMark/bug/eng-local-posix
jamesmarkchan Oct 6, 2025
adcbead
#78 adv options w render mode
jamesmarkchan Oct 11, 2025
b1583c5
#78 - Implement RenderFrequencyMode persistence (EnumType.STRING + sa…
vpstackhub Oct 20, 2025
a7e026f
#78 fix combox box event of render mode frequency
jamesmarkchan Nov 9, 2025
ec3f122
#78 - Final RenderFrequencyMode verification and persistence changes
vpstackhub Nov 10, 2025
c88f336
Remove accidentally added nested repo jdm-java-pr88
vpstackhub Nov 10, 2025
de1ebb1
#78 - Keep tested RenderFrequencyMode implementation from render-mode…
vpstackhub Nov 10, 2025
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
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
/bdm.properties
/dist/
/nbproject/private/
/build/
/jdm.properties
/tmp
*.zip
/build.properties
*.patch
build.properties
/derbyDB/
39 changes: 39 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# How to contribute to JDiskMark

First of all, thank you for considering a contribution to JDiskMark. We really appreciate the time and effort you want to spend improving the project, and we can use the help

## What we are looking for

- documentation (Getting Started guide, Examples, etc...)
- bug reports
- bug fixes
- code quality improvements
- features (both ideas and code are welcome)

## Making your Changes

Before you start, we recommend you open an issue for new features or bug fixes. This helps us coordinate and avoids duplicate work.

1. **Fork and Clone:** Start by forking the repository on GitHub and then clone your fork locally.

2. **Create a New Branch:** From the `dev` branch create a new, descriptively named branch for your changes:
`git checkout -b feature/your-awesome-feature`

3. **Code & Test:**
- Make your changes.
- Add test cases for new features or bug fixes.
- Test your build to make sure everything is still working.
- Please ensure your code is formatted correctly. If you're using NetBeans, you can use `Alt` + `Shift` + `F`.

4. **Commit Your Changes:**
- Write a clear and concise commit message. For example, "Fix: Corrected null pointer exception in DiskLogger" or "Feat: Added support for XFS filesystem."
- If you're fixing an issue, include the issue number and include `Closes#123` in your commit message to automatically close the issue when the PR is merged.
- If you have multiple commits, please squash them into a single one before submitting your pull request.

## Submitting the Changes

Submit a pull request via the normal GitHub UI.

## After Submitting

Do not use your branch for any other development, otherwise further changes that you make will be visible in the PR.
Binary file added EmptyStandbyList.exe
Binary file not shown.
48 changes: 48 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
JDiskMark 0.6.0 License Agreement
NOTICE: This is a legal agreement. By using this software, you agree to be bound by the terms of this license.

1. SCOPE OF LICENSE

This software, JDiskMark (the "Software"), is licensed, not sold. The copyright holders reserve all rights not expressly granted to you. This license grants you a non-exclusive, worldwide, royalty-free license to use, copy, modify, and distribute the Software, subject to the terms and conditions outlined below.

2. PERMISSIONS

You are granted permission, free of charge, to any person obtaining a copy of this Software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to:

Use the Software for personal and commercial purposes.

Copy, modify, and merge the Software.

Publish, distribute, and sublicense the Software.

Sell copies of the Software.

3. CONDITIONS

The above permissions are subject to the following conditions:

The original copyright notice and this permission notice must be included in all copies or substantial portions of the Software.

You are not permitted to remove, minimize, block, or modify any notices or attributions of the original authors or copyright holders within the Software.

You may not use the Software in any way that is unlawful or to create or propagate malware.

4. DISCLAIMER OF WARRANTY

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

5. LIMITATION OF LIABILITY

In no event shall the authors, copyright holders, or any other party involved in the creation or distribution of the Software be liable for any damages, including but not limited to direct, indirect, incidental, special, or consequential damages, arising out of the use or inability to use the Software.

6. SUPPORT SERVICES

The copyright holders are not obligated to provide any support services for the Software. Any support provided is "as is," "with all faults," and without warranty of any kind.

7. TRANSFER TO ANOTHER DEVICE

You may uninstall the Software and install it on another device for your use. You may not share this license on multiple devices.

8. GOVERNING LAW

This license agreement is governed by and construed in accordance with the laws of State of California, without regard to its conflict of law principles.
202 changes: 165 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,53 +1,181 @@
jDiskMark is a disk io utility written in java.
# JDiskMark v0.6.2 beta (Windows/Mac/Linux)

Java Disk Benchmark Utility

== Builds ==
## Features

- Java cross platform solution
- Benchmark IO read/write performance
- Graphs: sample bw, max, min, cum bw, latency (access time)
- Adjustable block size, block qty and sample qty
- Single or multi file option
- Sequential or random option
- Detect drive model, capacity and processor
- Save and load benchmark
- Auto clear disk cache (when sudo or admin)
- multi threaded benchmarks

## Releases

https://sourceforge.net/projects/jdiskmark/

## Installation

Java 21 needs to be installed to run jdiskmark.

1. Download and install [java 21](https://www.oracle.com/java/technologies/downloads/) from Oracle.

2. Verify java 21 is installed:
```
C:\Users\username>java --version
java 21.0.1 2023-10-17 LTS
Java(TM) SE Runtime Environment (build 21.0.1+12-LTS-29)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.1+12-LTS-29, mixed mode, sharing)
```

3. Extract release zip archive into desired location.
```
Examples:
/Users/username/jdiskmark-v0.6.0
/opt/jdiskmark-v0.6.0
```

## Launching as normal process

Note: Running without sudo or a windows administrator will require manually
clearing the disk write cache before performing read benchmarks.

1. Open a terminal or shell in the extracted directory.

2. run command:
```
$ java -jar jdiskmark.jar
```
In windows double click executable jar file.

3. Drop cache manually:
- Linux: `sudo sh -c "sync; 1 > /proc/sys/vm/drop_caches"`
- Mac OS: `sudo sh -c "sync; purge"`
- Windows: Run included EmptyStandbyList.exe or [RAMMap64.exe](https://learn.microsoft.com/en-us/sysinternals/downloads/rammap)
- With RAMMap64 invalidate disk cache with Empty > Empty Standby List

## Launching with elevated privileges

Note: Take advantage of automatic clearing of the disk cache for write read
benchmarks start with sudo or an administrator windows shell.

- Linux: `sudo java -jar jdiskmark.jar`
- Mac OS: `sudo java -jar jdiskmark.jar`
- Windows: start powershell as administrator then `java -jar jdiskmark.jar`

## Development Environment

jdiskmark client is developed with [NetBeans 21](https://netbeans.apache.org/front/main/download/) and [Java 21](https://www.oracle.com/java/technologies/downloads/)

## Source

Source code is available on our [github repo](https://github.com/JDiskMark/jdm-java/)

## Release Notes

### v1.0.0 planned
- TODO: #16 MacOS installer - tyler
- TODO: #15 Ubuntu installer - jeff
- TODO: #33 maven build - lane
- TODO: #40 gui presentation issues - james
- #84 processor info resolved for (sp) installs
- #73 refactor benchmark data model, keyboard op sel

### v0.6.2 linux optimized ui
- #64 persist IOPS, write sync - val
- control panel on left
- allow concurrent version runs
- event tab swapped w disk location

### v0.6.1 ms app store release
- JDiskMark in title and msi vendor name
- Remove "Average" from "Access Time" label

### v0.6.0
- #13 Detect drive info on startup
- #12 update look and feel (windows)
- #22 foreign capacity reporting
- #23 delete selected benchmarks
- #10 IOPS reporting
- #25 linux crash, capacity w terabytes and exabytes
- write sync default off
- #26 lowercase project and jar
- #20 threading and queue depth
- #36 I/O Mode dropdown uses enum values for type safety

### v0.5.1
- resolve #17 invalid disk usage reported win 10
- msi installer available

### v0.5
- update for java 21 LTS w NetBeans 20 environment: eclipselink 4.0, jpa 3.1,
modelgen 5.6, annotations 3.1, xml.bind 4.0
- increased drive information default col width to 170
- time format updated to `yyyy-MM-dd HH:mm:ss`
- default to 200 marks
- replace Date w LocalDateTime to avoid deprecated @Temporal
- disk access time (ms) - plotting disabled by default
- replace display of transfer size with access time in run panel
- GH-2 auto clear disk cache for combined write read benchmarks
- GH-6 save and load benchmarks and graph series
- break out actions into seperate menu
- admin or root indicator, architecture indicator
- GH-8 used capacity and total capacity
- initial color palette options
- report processor name

### v0.4
- updated eclipselink to 2.6 allows auto schema update
- improved gui initialization
- platform disk model info:
- windows: via powershell query
- linux: via `df /data/path` & `lsblk /dev/path --output MODEL`
- osx: via `df /data/path` & `diskutil info /dev/disk1`

### v0.3
- persist recent run with embedded derby db
- remove "transfer mark number" from graph
- changed graph background to dark gray
- resizing main frame stretches tabbed pane instead of empty panel

== Usage ==
### v0.2
- auto generate zip release ie. `jdiskmark-v0.2.zip`
- added tabbed pane near bottom to organize new controls
- format excessive decimal places
- show recent runs (not persisted)
- default to nimbus look and feel

1. Requires java 8.
### v0.1
- initial release

2. to run:

$ java -jar jDiskMark.jar
### Proposed Features
- upload benchmarks to jdiskmark.net portal (anonymous/w login)
- local app log for remote diagnostics
- selecting a drive location displays detected drive information below
- speed curves w rw at different tx sizes
- response time histogram > distribution of IO
- IOPS charts, review potential charts
- help that describes features and controls

On windows double click executable jar file.
## issues
- read&write not consistant with order caps
- bottom margins between table to bar to window edge should be the same

## Windows Paths Examples for Building

== Release Notes ==
For ant builds

v0.1
- initial release
`C:\apache-ant-1.10.15\bin`

v0.2
- auto generate zip release ie. jdiskmark-v0.2.zip
- added tabbed pane near bottom to organize new controls
- format excessive decimal places
- show recent runs (not persisted)
- default to nimbus look and feel
For maven builds

v0.3
- persist recent run with embedded derby db
- remove "transfer mark number" from graph
- changed graph background to dark gray
- resizing main frame stretches tabbed pane instead of empty panel
`C:\apache-maven-3.9.10\bin`

v0.4
- updated eclipselink to 2.6 allows auto schema update
- improved gui initialization
- platform disk model info:
windows: via powershell query
linux: via "df /data/path" & "lsblk /dev/path --output MODEL"
osx: via "df /data/path" & "diskutil info /dev/disk1"
For code signing

desired features
- update windows drive model parsing script to adapt to differing script output
- disk access time (ms)
- disk capacity and drive letter (available on windows)
- auto clear disk cache windows, linux, osx
linux: sync && echo 1 > /proc/sys/vm/drop_caches
windows: ???
osx: ???
`C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x86\`
16 changes: 16 additions & 0 deletions archive/package-msi.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
:: GH-14 This script uses jpackage w wix 3.14 to create a msi installer
:: wix toolset 3.14 is available here:
:: https://github.com/wixtoolset/wix3/releases/tag/wix3141rtm

:: make sure to set the version number
set VERSION=0.6.0-dev.g
set MSI_VER=0.6.0

set JPKG_EXE="C:\Program Files\java\jdk-21\bin\jpackage"

del jdiskmark-*.msi
%JPKG_EXE% --type msi --input jdiskmark-%VERSION% --main-jar jdiskmark.jar ^
--name jdiskmark-%VERSION% --app-version %MSI_VER% ^
--vendor "jdiskmark.net" --win-console --win-menu

ren jdiskmark-%VERSION%-%MSI_VER%.msi jdiskmark-%VERSION%.msi
4 changes: 4 additions & 0 deletions archive/sign-msi.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
:: script to sign msi file
::

"C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\signtool.exe" sign /tr http://timestamp.sectigo.com /td sha256 /fd sha256 /a "jdiskmark-0.6.0-dev.h.msi"
Loading